ado*_*ojp 6 javascript mootools internet-explorer-8
让我们假设我有以下标记:
<div id="placeHolder"></div>
Run Code Online (Sandbox Code Playgroud)
我有一个jsVar
包含一些标记和一些JavaScript 的JavaScript变量.
通过使用Mootools 1.1,我可以将JavaScript内容注入占位符,如下所示:
$('placeHolder').setHTML(jsVar);
Run Code Online (Sandbox Code Playgroud)
这适用于Firefox,Opera甚至Safari,结果标记如下所示:
<div id="placeHolder">
<strong>I was injected</strong>
<script type="text/javascript">
alert("I was injected too!");
</script>
</div>
Run Code Online (Sandbox Code Playgroud)
但是,在IE 8上我得到以下内容:
<div id="placeHolder">
<strong>I was injected</strong>
</div>
Run Code Online (Sandbox Code Playgroud)
有没有办法在IE 8上注入JavaScript或安全模型是否禁止我这样做?
我尝试了Luca Matteis的使用建议
document.getElementById("placeHolder").innerHTML = jsVar;
Run Code Online (Sandbox Code Playgroud)
而不是MooTools代码,我得到相同的结果.这不是MooTools的问题.
此MSDN帖子专门解决了如何使用innerHTML将javascript插入页面.你是对的:IE确实认为这是一个安全问题,所以要求你跳过某些环节来注入脚本...大概是黑客可以读取这个MSDN帖子,所以我不知道如何为什么MS认为这个额外的间接层"安全",但我离题了.
来自MSDN文章:
<HTML>
<SCRIPT>
function insertScript(){
var sHTML="<input type=button onclick=" + "go2()" + " value='Click Me'><BR>";
var sScript="<SCRIPT DEFER>";
sScript = sScript + "function go2(){ alert('Hello from inserted script.') }";
sScript = sScript + "</SCRIPT" + ">";
ScriptDiv.innerHTML = sHTML + sScript;
}
</SCRIPT>
<BODY onload="insertScript();">
<DIV ID="ScriptDiv"></DIV>
</BODY>
</HTML>
Run Code Online (Sandbox Code Playgroud)
如果可能的话,您可能希望考虑使用document.write
注入的脚本加载标记来提高安全性并减少跨浏览器的不兼容性.我知道这可能是不可能的,但值得考虑.
我不确定 MooTools,但是你尝试过 innerHTML 吗?
document.getElementById("placeHolder").innerHTML = jsVar;
归档时间: |
|
查看次数: |
14750 次 |
最近记录: |