Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从Firefox扩展中清除innerHTML的最佳方法_Javascript_Jquery_Firefox Addon Webextensions - Fatal编程技术网

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用法的人: