eval()不执行外部(src = ...)脚本

时间:2016-03-22 22:00:15

标签: javascript jquery ajax html5

在完全重写div之后,我正在使用eval()执行所有qf=name^20 address^10 city 个标记。

<script>

适用于内联脚本,但对以下脚本没有影响:

$("#content").find("script").each(function(){
    eval($(this).text());
});

为什么?我可以“强制”浏览器加载并执行外部脚本吗?

2 个答案:

答案 0 :(得分:0)

除了使用eval的实际问​​题之外,您还试图eval这些脚本标记中的.text,这基本上没什么。

当加载<script>标记时,它会将外部文件中的链接作为资源链接到您的页面并执行脚本。它不会直接向dom渲染任何东西。

因此,您$(this).text()将返回''。

如果要重新加载外部脚本,则需要强制刷新页面,或者可能更改这些脚本的方式:ex。 jQuery.getScript alternative in native JavaScript

答案 1 :(得分:-2)

$("body").css("background", "silver");

$("button").click(function () {
  $("script[src^='data:']").each(function () {
    var script = document.createElement('script');
    script.src = this.src;
    document.body.appendChild(script);
  })
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="data:text/javascript,document.body.style.background='red'"></script>
<button>Go</button>