运行用ajax加载的脚本标记

一般问题

假设你有一个简单的ajax请求,比如$("#container").load('/url #content'); 。 加载的DOM将是类似的东西

 email /* some script */ 

如何才能执行脚本标记的内容?

具体问题

Cloudflare通过将文本替换为[email protected]并包含解除它的脚本来自动保护DOM中的电子邮件地址。 但是,可以异步加载内容,并且不会执行解析的脚本。 我可以关闭电子邮件保护function(我想),但我想知道是否还有另一种解决方法。

在http://aysites.com/what上查看它 – 点击“联系”

有一个纯js函数可以调用JavaScript编译器。 它是eval 。 你需要使用它。

例子:

 jQuery.globalEval("var newVar = true;") 

在jQuery.com上

要么

 eval("x=10;y=20;document.write(x*y)"); document.write("
" + eval("2+2")); document.write("
" + eval(x+17));

在w3schools

我的回答还包括一些Tooraj的魔法。

基本上,我们将使用相同的加载函数,并且在回调中,我们将获取脚本,从中获取函数,然后评估它们。

 $("#container").load('/url #content', function(){ eval($('#container script').html()); }); 

使用上面的选择器并从该选择器中获取HTML(这恰好是脚本中的函数),然后我们可以eval该函数并使其运行。

这是一个有效的jsFiddle。

您可以将脚本部分单独放在具有适当标头的页面中,然后使用$.getScript()来获取并执行脚本,

请参阅Doc: http : //api.jquery.com/jQuery.getScript/