假设您有一个简单的ajax请求,例如$("#container").load('/url #content');
。加载的DOM将类似于
<a>email</a>
<script>/* some script */</script>
如何才能执行脚本标记的内容?
Cloudflare通过将文本替换为[email protected]
并包含解除它的脚本来自动保护DOM中的电子邮件地址。但是,可以异步加载内容,并且不会执行解析的脚本。我可以关闭电子邮件保护功能(我想),但我想知道是否还有另一种解决方法。
在http://aysites.com/what查看实际操作 - 点击“联系”
答案 0 :(得分:3)
有一个纯js函数可以调用JavaScript编译器。它是eval
。你需要使用它。
示例:
jQuery.globalEval("var newVar = true;")
或
eval("x=10;y=20;document.write(x*y)");
document.write("<br />" + eval("2+2"));
document.write("<br />" + eval(x+17));
答案 1 :(得分:2)
我的回答还包括Tooraj的一些魔力。
基本上,我们将使用相同的加载函数,在回调中,我们将获取脚本,从中获取函数,然后评估它们。
$("#container").load('/url #content', function(){
eval($('#container script').html());
});
使用上面的选择器并从该选择器中取出HTML(这恰好是脚本中的函数),然后我们可以eval
运行该函数并使其运行。
答案 2 :(得分:1)
您可以将脚本部分单独放在具有适当标头的页面中,然后使用$.getScript()
来获取并执行脚本,