我正在瀏覽器擴展在Facebook上工作,現在我的問題是,Facebook重寫setTimeout & setInterval本機函數,並且它們的實現在Internet Explorer上不起作用。實現setTimeout本機方法
有沒有一種方法來實現這些功能?
我正在瀏覽器擴展在Facebook上工作,現在我的問題是,Facebook重寫setTimeout & setInterval本機函數,並且它們的實現在Internet Explorer上不起作用。實現setTimeout本機方法
有沒有一種方法來實現這些功能?
您可以創建一個iframe,然後訪問它的window
對象,獲得新setTimeout
定義並覆蓋一個在全局命名空間:雖然這個工程
var f = document.createElement('iframe');
document.body.appendChild(f);
window.setTimeout = f.contentWindow.setTimeout;
document.body.removeChild(f);
,它可能不是2個腳本的好IDEEA開始重寫對方的變量。我建議你讓FB到控制setTimeout
函數,並且使用它的新副本,但不要再覆蓋它(可以將其存儲在本地變量或其他名稱的全局變量中)。
IE9當我嘗試訪問contentWindow屬性時,使用jquery中的contents()返回文檔而不是窗口對象時拋出訪問被拒絕。 –
他們對他們做了什麼?他們爲什麼不在IE中工作 - 我不相信他們可以在沒有他們的情況下編寫應用程序? – Bergi
我猜他們以某種方式調用它們,它們在Chrome和Firefox和safari上爲我工作,只有IE無法處理代碼。 –
如果它是瀏覽器擴展,您可以嘗試在Facebook腳本加載之前捕獲這些方法。例如'var myTimeout = setTimeout;' – ColBeseder