运行用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/