Javascript 从Firefox扩展中清除innerHTML的最佳方法
我正在运行Javascript 从Firefox扩展中清除innerHTML的最佳方法,javascript,jquery,firefox-addon-webextensions,Javascript,Jquery,Firefox Addon Webextensions,我正在运行web ext lint并返回一些错误,如下所示: 不安全变量赋值 对innerHTML的不安全分配 由于安全性和性能方面的考虑,可能无法使用未充分消毒的动态值来设置。这可能会导致安全问题或相当严重的性能下降 所讨论的代码基本上是: var html = '<style>body { margin: 0; } iframe { border: none; }' + '</style><iframe src="' + URL.
web ext lint
并返回一些错误,如下所示:
不安全变量赋值
对innerHTML的不安全分配
由于安全性和性能方面的考虑,可能无法使用未充分消毒的动态值来设置。这可能会导致安全问题或相当严重的性能下降
所讨论的代码基本上是:
var html = '<style>body { margin: 0; } iframe { border: none; }' +
'</style><iframe src="' + URL.createObjectURL(blob) +
'" width="100%" height="100%"></iframe>';
document.documentElement.innerHTML = html;
var html='body{margin:0;}iframe{border:none;}'+
'';
document.documentElement.innerHTML=html;
我不是一个大的JS开发人员,所以我理解这里的安全漏洞,但我真的不知道最好的解决方案是什么来让AMO和linter高兴。我想我需要将上面的字符串转换成一组命令来生成节点?是的,这样更安全。对于上面的例子,它将是
var css = 'body { margin: 0; } iframe { border: none; }';
var style = document.createElement('style');
style.appendChild(document.createTextNode(css));
document.body.appendChild(style);
var frame = document.createElement('iframe');
frame.width = "100%";
frame.height = "100%";
frame.src = URL.createObjectURL(blob);
document.body.appendChild(frame);
要在有多种方法之前清除文档正文,请参阅。您的解决方案添加但不替换,文档的内容-可能会添加一些类似的内容。@Xan我为此添加了一个指向不同问题的链接。可能希望从该问题中获取非
innerHtml
方法。在另一个WebExtension中修复innerHtml用法的人: