满载运行AJAX脚本标记(Run script tags loaded with ajax)

2019-09-19 07:41发布

一般问题

假设你有一个像一个简单的Ajax请求$("#container").load('/url #content'); 。 加载的DOM会像

<a>email</a>
<script>/* some script */</script>

我能做些什么,以获得脚本标记的内容来执行?

具体问题

CloudFlare的更换与文本自动保护电子邮件地址的DOM [email protected]和包括揭开它的脚本。 然而,内容可以异步加载,并且不解体的脚本将不被执行。 我可以关掉邮件保护功能(我认为),但我不知道是否有解决这个另一种方式。

看到它在行动http://aysites.com/what -点击“联系人”

Answer 1:

有它调用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的



Answer 2:

我的回答包括一些Tooraj的魔术也是如此。

基本上,我们将使用相同的负载功能,并在回调,我们要抓住这个脚本,从内它需要的功能,然后EVAL他们。

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

使用上述选择器和抓取HTML指出,选择器(这恰好是在脚本中的函数)的,我们就可以eval该函数,并将它运行。

这里有一个工作的jsfiddle。



Answer 3:

你可以把脚本的一部分单独的页与适当的报头,然后用$.getScript()来获取和执行脚本,

见文件: http://api.jquery.com/jQuery.getScript/



文章来源: Run script tags loaded with ajax