gpt4 book ai didi

android - 在 Firefox for Android 附加组件中访问 DOM

转载 作者:行者123 更新时间:2023-11-29 01:34:40 25 4
gpt4 key购买 nike

这听起来像是一个非常简单的问题,但我一直在浏览“Firefox for Android”的 MDN 文档,但我似乎无法弄明白。

我正在尝试构建一个简单的“Firefox for Android”附加组件,它只是将脚本标记插入到访问过的页面中。我尝试了以下代码(省略了 template boilerplate code ):

function loadIntoWindow(window) {
if (!window)
return;

menuId = window.NativeWindow.menu.add("Insert", null, function() {
insertScript(window);
});
}

function insertScript(window) {
// none of these properties exist: window.document.body.innerHTML, window.body.innerHTML
// window.document.body.innerHTML = "<h1>this page has been eaten</h1>";

// var contentScriptString = 'document.body.innerHTML = "<h1>this page has been eaten</h1>";'

// throws error "ReferenceError: require is not defined"
// var tabs = require("sdk/tabs");

// tabs.activeTab.attach({
// contentScript: contentScriptString
// });

// throws error "TypeError: attach is not a function"
// window.BrowserApp.selectedTab.attach({
// contentScript: contentScriptString
// });
}

function unloadFromWindow(window) {
if (!window)
return;

window.NativeWindow.menu.remove(menuId);
}

loadIntoWindow 函数被正确调用,因为“插入”选项被添加为菜单选项,并且该选项在点击时又正确调用了 insertScript 选项。

但是,我不知道如何访问窗口的 DOM 以插入脚本。我已经尝试了有关 content scripts 的页面上提到的选项和 BrowserApp property ..

谢谢,

威廉

最佳答案

看来我可以回答我自己的问题了。翻看后browser.js ,我发现以下代码可以访问当前页面的 DOM:

var contentWindow = window.BrowserApp.selectedBrowser.contentWindow;
var document = contentWindow.document;

document.body.innerHTML = "<h1>this page has been eaten</h1>";

关于android - 在 Firefox for Android 附加组件中访问 DOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29177115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com