Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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 使用内部脚本设置innerHTML_Javascript_Firebug_Innerhtml - Fatal编程技术网

Javascript 使用内部脚本设置innerHTML

Javascript 使用内部脚本设置innerHTML,javascript,firebug,innerhtml,Javascript,Firebug,Innerhtml,如果我在任何页面的Firebug中运行以下行: document.documentElement.innerHTML="<script>alert(1)</script>"; document.documentElement.innerHTML=“警报(1)”; 为什么没有执行alert命令?实际上,您可以使用eval,但这不是解决安全问题的好方法。您可以这样做: var scr = document.createElement('script'); scr.src

如果我在任何页面的Firebug中运行以下行:

document.documentElement.innerHTML="<script>alert(1)</script>";
document.documentElement.innerHTML=“警报(1)”;

为什么没有执行
alert
命令?

实际上,您可以使用
eval
,但这不是解决安全问题的好方法。您可以这样做:

var scr = document.createElement('script');
scr.src = 'yourscriptsource';
document.body.appendChild(scr);

希望有帮助

你不必这么做。在Firebug中,转到“控制台”选项卡。您可以直接在那里输入代码。在控制台底部的三个蓝色尖括号旁键入此命令,然后按enter键:
alert(“asdf”)

看起来您的
标记正在按预期添加,但其中的代码未被执行。如果尝试使用
document.head
(或者任何其他DOM元素,似乎也会出现同样的失败。无论出于何种原因(可能是标准遵从性,可能是安全性),通过
.innerHTML
添加的
块中的内联代码根本无法运行

但是,我确实有产生类似功能的工作代码:

var script = document.createElement('script');
script[(script.innerText===undefined?"textContent":"innerText")] = 'alert(1);';
document.documentElement.appendChild(script);

在这里,您可以使用
documentElement添加
块。appendChild
并使用
textContent
innerText
来设置

的内容。最好使用创建元素并附加它们,而不是使用innerhtml直接插入任何html

您可以在此处使用“阅读更多信息”:

这个片段的作用是:

var newScript = document.createElement( "script" );
newScript.type = 'text/javascript';
var scriptContent = document.createTextNode( "googletag.cmd.push( function() { googletag.display( '" + encodeURIComponent( divID ) + "' ); } );" ); 
newScript.appendChild( scriptContent ); 
下面是一个实际的例子:

@11684:这在HTML5中是不需要的。@Rocket你不知道他在用哪个浏览器!哦,等等。萤火虫。。。这意味着Mozilla…这个链接有用吗?我认为这是为了赢得“一行代码可以容纳多少有问题的javascript实践”的竞争。OP试图诊断这行代码为什么不能按预期工作。OP几乎肯定已经在使用Firebug控制台了(除了控制台之外,他还能在Firebug中运行以下代码行吗?)。这是
eval()的不错选择。