gpt4 book ai didi

javascript - 不允许使用 firefox 插件 innerHTML,需要 DOM 帮助

转载 作者:行者123 更新时间:2023-11-30 05:39:47 25 4
gpt4 key购买 nike

我正在编写我的第一个 Firefox 插件。它已完成,但 mozilla 拒绝了它并给出了以下答案:

1) 您的附加组件通过分配给 innerHTML 或类似方式从包含可能未清理数据的 HTML 字符串创建 DOM 节点。除了效率低下之外,这是一个主要的安全风险。有关详细信息,请参阅 https://developer.mozilla.org/en/XUL_School/DOM_Building_and_HTML_Insertion .以下是您执行此操作的一些示例:(剪切...)

我写道:

var myDiv = content.document.getElementById("myContent");
myDiv.innerHTML = "some html code";

现在我不是 JS 程序员,我不知道如何继续。我测试了一些这样的代码:

var NewNode = content.document.createElement("span");
NewNode.appendChild(content.document.createTextNode("Hello World!"));

//content.document.body.appendChild(NewNode);//ok, works
content.document.getElementById("myContent").appendChild(NewNode);//doesn't work

但在我将它附加到 .body 之前它不起作用

在其他页面上工作的示例在这里似乎不起作用。此外,我不明白它是否解决了 mozilla 指出的问题。

你能帮我写出应该替换我写的两行的代码吗?如果你需要完整的代码,这里是:http://www.maipiusenza.com/LDV/down/ldvgenerator.xpi

谢谢!娜迪亚

最佳答案

刚刚做了一个快速的 js fiddle,我想知道你为什么使用 content.document 所以我将它修改为 document 并且它起作用了。

http://jsfiddle.net/eDW82/

var NewNode = document.createElement("span");
NewNode.appendChild(document.createTextNode("Hello World"));
document.getElementById("myContent").appendChild(NewNode);

我在使用未经处理的 HTML 时遇到了类似的问题,在我广泛使用它时,我选择使用 jQuery,它将通过 mozillas 规则。能够以这种方式创建节点会让生活变得更加轻松。

$("<div>", {id:"example"}).text("Hello World")

它只是读起来好多了。

关于javascript - 不允许使用 firefox 插件 innerHTML,需要 DOM 帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21497894/

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