[英]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.