如何从HTML字符串动态添加脚本到网页
How to dynamically add scripts to webpage from an HTML string?
假设我有一个名为html的字符串,其中包含以下内容:
<script>
document.write("Some random stuff here");
</script>
<script src="someremotejsfile"></script>
我想在iframe窗口中动态地显示它。
我最初的解决方案是:
document.open();
document.write(html);
document.close();
但这会在firefox中造成问题,即使内容已经加载,微调器也会一直旋转,好像它永远在加载一样。我的下一次尝试是:
document.body.innerHTML = html;
这会将脚本添加到主体中,但实际上并没有执行它们。所以最后我尝试了:
div = document.createElement("div");
div.innerHTML = html;
document.body.appendChild(div);
但这似乎也不会执行html字符串中的脚本。
所以我的问题是,给定一个html字符串,我如何动态地将它添加到页面中?例如,它可以是一个广告标签,其中包含任意数量的脚本和其他html元素。我无法控制html字符串中的内容。对我来说,这是一个黑框。我只需要能够获取长的html字符串并将其加载到窗口中(在本例中为iframe)。
document.write作品:
<iframe id="ifr"></iframe>
<script type="text/javascript">
var scr = decodeURIComponent("%3Ch1%3EHello%20World%3C%2Fh1%3E%3Cscript%3Ealert(%27Some%20random%20stuff%20here%27)%3B%3C%2Fscript%3E");
document.getElementById("ifr").contentWindow.document.write(scr);
document.getElementById("ifr").contentWindow.document.close();
</script>
(别管编码的URI字符串,只需要它能够将代码<h1>Hello World</h1><script>alert('Some random stuff here');</script>
分配给脚本标记
如果你使用jQuery,你可以使用.html来加载,它会触发你的脚本
$(document.body).html( $(document.body).html() + htmlToAdd );
如果你不使用jQuery,你可以手动评估你的脚本。。
function appendHTMLtoBody(html){
var body = document.body;
var scriptsLoaded = [].slice.apply(body.getElementsByTagName("script"),[0]);
for(var i = 0; i < scriptsLoaded.length; i++){
scriptsLoaded[i].setAttribute("data-loaded","true");
}
body.innerHTML += html;
var allScripts = body.getElementsByTagName("script");
for(var i = 0; i < allScripts.length; i++){
if( allScripts[i].getAttribute("data-loaded") !== "true" ){
var script = allScripts[i].innerHTML;
eval(script);
}
}
}
我想会解决你的问题。
相关文章:
- ScriptManager.RegisterStartupScript保持多次添加脚本块
- 如何在 JavaScript 中的 HTML head 标记中动态添加脚本值
- 添加脚本包括一个顶点:组件
- 如何在正文元素之前添加脚本
- 如何使用 javascript 添加脚本代码
- 如何使用javascript在子窗口中添加脚本文件
- 在 CakePHP 中,现在 View->addScript() 已被弃用,我如何向我的布局添加脚本*一次*
- 在页面加载 c# 上添加脚本
- 如何在 iframe for jQuery 中添加脚本元素
- 如何在 PHPBB3 Teamplate 中动态添加 <脚本> 标签
- 在页面 JavaScript 中动态添加脚本
- 如何从HTML字符串动态添加脚本到网页
- Javascript性能-使用$.getScript()添加脚本
- 动态添加脚本时未定义$/jQuery
- Google+Business帐户,添加脚本以自动将同事添加到新用户的同事圈中
- 添加<脚本>元素时,CSS 翻译过渡停止工作
- 不能在header中添加脚本
- 在window.onload后添加脚本src
- 添加脚本路径到xslt文件
- 如何在html文件中添加脚本标签,在jquery.js被包含之后,但在结束正文标签之前只使用javascript