将<script>内容作为String </script>获取

时间:2011-03-19 20:00:16

标签: javascript jquery html

我尝试按需使用Javascript来覆盖跨域问题。

所以现在我的页面上有这样的东西:

<script id="scr1" src="{some other domain url}"></script>

此脚本的内容只是一个数组:

["hello", "world", "what", "where"]

我想以某种方式将此内容作为字符串获取,以便我可以评估它。
我希望我有一些像

这样的JS / JQuery方法
var v = eval($("#scr1").getContent());

你能帮我吗?

注意:我不能使用ajax作为解决方案。

3 个答案:

答案 0 :(得分:9)

你应该查找JSONP。您希望脚本返回的是调用以数据作为参数的回调。

<script id="scr1" src="http://www.example.com/some/action?callback=cb" type="text/javascript></script>

然后,服务器端将生成脚本内容:

cb( ["hello", "world", "what", "where"] );

然后在你的页面中,你需要一个名为cb的函数,它需要一个数组。

function cb(data) {
  // do something with the array
}

当然,这需要服务器的合作来理解你的回调参数并做出适当的响应。如果你控制服务器,这很容易做到。如果没有,那么您将需要使用构造为返回JSONP的API。 callback参数是此类框架的标准名称。如果他们没有API,那么您需要在服务器上代理请求,在这种情况下,您可以使用标准JSON。

FWIW,jQuery使得期望返回JSONP的API非常容易。

$.getJSON( 'http://example.com/api/method?callback=?', data, function(result) {
     // do something with the json result
});

您也可以将此与post / get / ajax方法一起使用,但getJSON更容易。请注意,包含callback参数会自动告诉它使用JSONP(脚本)请求,并自动填写它创建的回调名称,以便在请求中包装(匿名)回调函数。

答案 1 :(得分:2)

应该可以使用jquery.getScript

$.getScript('urlOfRemoveScript',function(script){
    var v = eval(script);
});

不是100%肯定这会起作用。

答案 2 :(得分:1)

如果有人真的需要找到一种方法来阅读每个脚本内容,那么这就是我的贡献。


  jQuery("script").each(function(){
    var scriptContent = this.innerText
    // do something with scriptContent
  })