簡體   English   中英

如何將javascript字符串轉換為javascript函數,並保留正確的“ this”?

[英]How to convert a javascript string to a javascript function, preserving the correct “this”?

瀏覽器元素具有onpopupshowing屬性,該屬性是由多個javascript語句組成的字符串。

我想“改寫”那部分javascript。

如果這是一個函數,則將其分配給一個變量,將我的“覆蓋”函數分配給element屬性,然后(如果需要)從覆蓋的函數中調用原始函數,就像這樣:

var oldfunc;
function myoverrridingfunc () { my statement; oldfunc(); my other statement; }

oldfunc = element.getAttribute( "onpopupshowing" )
element.setAttribute( "onpopupshowing", myoverrridingfunc );

但是element.getAttribute(“ onpopupshowing”)不是一個函數,而是一個字符串。

我可以使用Function對象將字符串轉換為函數,但是字符串包含this引用。 如何保持正確的this

攔截/覆蓋此腳本的最佳方法是什么? 注意:這僅需要在Firefox中工作,而無需在任何版本的java / ECMAscript中工作。

謝謝。

var oldfuncStr = element.getAttribute("onpopupshowing");
element.removeAttribute("onpopupshowing");
var oldfunc = new Function(oldfuncStr);
element.addEventListener("popupshowing", function()
{
  myStatement;
  oldfunc.call(this);
  otherStatement;
}, false);

call專門用於指定this 我在Firefox中進行了測試,但是具有onclick事件而不是onpopupshowing

也許您對此太想了。 為什么不只將JavaScript語句括在引號中並將其分配給屬性? 如果該屬性期望JavaScript語句為字符串,那么我不希望分配一個函數引用就可以正常工作。 (可以?)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM