我正在開發一個將狀態欄中放置按鈕的Firefox擴展。點擊按鈕後,擴展插入一些JavaScript到當前頁面。這個Javascript有一個我想用一些參數調用的函數。我已經管理注入代碼,我通過Firebug檢查了頁面,並驗證JS已經被注入。如何在我的擴展中的頁面中調用Javascript函數?在開發Firefox擴展時在頁面中執行注入的Javascript代碼
- 更多信息
下面是我用注入我的javascript代碼:
var doc = window.content.document;
//Add the script
var visibilityJS = doc.createElement("script");
visibilityJS.setAttribute("type", "text/javascript");
visibilityJS.setAttribute("charset", "UTF-8");
visibilityJS.setAttribute("src", "chrome://visibility/content/scripts/visibility.js");
head.appendChild(visibilityJS);
//Call the function
alert("Executing testfunction");
window.content.document.defaultView.testFunction();
..和我的JS文件中的代碼,我要去注入。即visibility.js
window.testFunction = function() {
alert("Message");
}
謝謝。
嗨費利克斯。我無法弄清楚你的意思。我嘗試閱讀文檔,即您指出的頁面,但我仍然無法完全理解。我嘗試了'window.content.document。<函數名稱>'但那不起作用。你會碰巧有一個簡單的例子或什麼?謝謝。 – 2010-11-18 20:38:43
@Mridang Agarwalla:你很近。 'window.content.document'應該和'gBrowser.contentDocument'一樣。但是這給了你網站的文檔對象。全局變量總是網站的「窗口」對象的屬性。 'document.defaultView'應該給你那個對象。試試'window.content.document.defaultView。<函數名稱>'。 – 2010-11-18 23:08:51
再次菲利克斯。我似乎還無法訪問它。我得到以下錯誤 - 'window.content.document.defaultView.testFunction'不是一個函數。我嘗試從JavaScript控制檯調用'testFunction',它工作但擴展仍然無法訪問它。以任何方式添加或修改我注入的Javascript代碼?再次感謝。 – 2010-11-19 07:47:36