从 Android 附加组件的 Firefox 访问 DOM
Accessing the DOM from a Firefox for Android add-on
我正在尝试(但失败了)将元素插入到访问过的每个页面中。我只能将元素插入初始页面(安装附加组件后显示的页面)。下面的代码片段展示了这种行为。
我已经尝试将插入 H1 元素的逻辑放在 onOpenWindow() 中,尽管这似乎没有任何区别。
注意:下面的代码是 template boilerplate code
的补充
const { classes: Cc, interfaces: Ci, utils: Cu } = Components;
Cu.import('resource://gre/modules/Services.jsm');
function loadIntoWindow(window) {
if (!window)
return;
window.NativeWindow.toast.show("Inserting script", "short");
var contentWindow = window.BrowserApp.selectedBrowser.contentWindow;
var document = contentWindow.document;
document.body.innerHTML = "<h1>THIS TEXT WAS INSERTED</h1>";
}
var DOMWindows = Services.wm.getEnumerator('navigator:browser');
while (DOMWindows.hasMoreElements()) {
var aDOMWindow = DOMWindows.getNext();
var allTabs = aDOMWindow.BrowserApp._tabs;
for (var i=0; i<allTabs.length; i++) {
var aContentWindow = allTabs[i].window;
}
}
我正在尝试(但失败了)将元素插入到访问过的每个页面中。我只能将元素插入初始页面(安装附加组件后显示的页面)。下面的代码片段展示了这种行为。
我已经尝试将插入 H1 元素的逻辑放在 onOpenWindow() 中,尽管这似乎没有任何区别。
注意:下面的代码是 template boilerplate code
的补充const { classes: Cc, interfaces: Ci, utils: Cu } = Components;
Cu.import('resource://gre/modules/Services.jsm');
function loadIntoWindow(window) {
if (!window)
return;
window.NativeWindow.toast.show("Inserting script", "short");
var contentWindow = window.BrowserApp.selectedBrowser.contentWindow;
var document = contentWindow.document;
document.body.innerHTML = "<h1>THIS TEXT WAS INSERTED</h1>";
}
var DOMWindows = Services.wm.getEnumerator('navigator:browser');
while (DOMWindows.hasMoreElements()) {
var aDOMWindow = DOMWindows.getNext();
var allTabs = aDOMWindow.BrowserApp._tabs;
for (var i=0; i<allTabs.length; i++) {
var aContentWindow = allTabs[i].window;
}
}