我尝试按需使用Javascript来覆盖跨域问题。
所以现在我的页面上有这样的东西:
<script id="scr1" src="{some other domain url}"></script>
此脚本的内容只是一个数组:
["hello", "world", "what", "where"]
我想以某种方式将此内容作为字符串获取,以便我可以评估它。
我希望我有一些像
var v = eval($("#scr1").getContent());
你能帮我吗?
注意:我不能使用ajax作为解决方案。
答案 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
})