一般问题
假设你有一个像一个简单的Ajax请求$("#container").load('/url #content');
。 加载的DOM会像
<a>email</a>
<script>/* some script */</script>
我能做些什么,以获得脚本标记的内容来执行?
具体问题
CloudFlare的更换与文本自动保护电子邮件地址的DOM [email protected]
和包括揭开它的脚本。 然而,内容可以异步加载,并且不解体的脚本将不被执行。 我可以关掉邮件保护功能(我认为),但我不知道是否有解决这个另一种方式。
例
看到它在行动http://aysites.com/what -点击“联系人”
有它调用JavaScript编译器纯js函数。 这是eval
。 您需要使用它。
例子:
jQuery.globalEval("var newVar = true;")
在jQuery.com
要么
eval("x=10;y=20;document.write(x*y)");
document.write("<br />" + eval("2+2"));
document.write("<br />" + eval(x+17));
在W3Schools的
我的回答包括一些Tooraj的魔术也是如此。
基本上,我们将使用相同的负载功能,并在回调,我们要抓住这个脚本,从内它需要的功能,然后EVAL他们。
$("#container").load('/url #content', function(){
eval($('#container script').html());
});
使用上述选择器和抓取HTML指出,选择器(这恰好是在脚本中的函数)的,我们就可以eval
该函数,并将它运行。
这里有一个工作的jsfiddle。
你可以把脚本的一部分单独的页与适当的报头,然后用$.getScript()
来获取和执行脚本,
见文件: http://api.jquery.com/jQuery.getScript/