我正在发出一个AJAX请求来检索包含在<script>
中的一些JavaScript - 应该插入当前页面的标记。如何在插入时执行插入的代码?
我正在使用此代码段附加代码:
function drawOutput(responseText) {
var container = document.getElementById('output');
container.innerHTML = responseText;
}
检索到的HTML(responseText
)如下所示:
<script>
console.log('Injected!');
</script>
那么如何让<script>
标签执行?
答案 0 :(得分:0)
假设你在这里和那里收到一些带有scipt标签的标记,你就不能像其他问题那样eval
。
jQuery是您准备好使用的选项,假设您愿意使用它。
$('#output').html('<p>Hello, Foo.</p><scr' + 'ipt>alert(\'foo\')</scr' + 'ipt>');
将执行脚本并添加标记。请注意我的代码中的脚本标记是如何增强的。这很重要,因此浏览器不会将javascript字符串文字中的结束脚本标记与正在执行的脚本的实际结束标记错误。但是,如果从服务器加载标记,则不是问题。
同样使用此方法,建议仅从受信任的资源加载标记,因为脚本将运行。
P.S。如果你不打算使用jQuery(如果由于某些原因你不能),你可能想要检查它们的实现并单独使用它。 (我的意思是查看他们的源代码),但前提是你要做到这一点。