我有一个来自我正在尝试修改的 wordpress 插件的 javascript 文件。似乎存在某种漏洞的跨域请求。就是这个功能:
function urlCallback(url){
var req = url;
var head = document.getElementsByTagName("head").item(0);
var script = document.createElement("script");
script.setAttribute("type", "text/javascript");
script.setAttribute("src", req);
head.appendChild(script);
}
传递的 url 类似于'http://url.com/page?callback=namespace.myFunction'
myFunction 是脚本中其他地方定义的函数。
据我了解,这是在我的页面顶部插入一个源 URL,导致浏览器加载该页面。然后调用附加到该 url 的回调,将结果作为单个参数传递给示例函数 myFunction。
我的问题是我需要为几个不同的唯一 url 调用 myFunction,但结果与调用 url 相关。myFunction 似乎在页面完成加载时被调用,所以我不能简单地计算它正在操作的数据集。我需要一些方法让 myFunction 传递一个在回调 url 中编码的附加变量,或者让 myFunction 知道它附加到的 url。
谁能帮我?
编辑:
为了进一步详细说明,这是我拥有的代码的简化版本:
var parseUrls = (function(){
function urlCallback(url){
var req = url;
// Here is where I need to save the url
var head = document.getElementsByTagName("head").item(0);
var script = document.createElement("script");
script.setAttribute("type", "text/javascript");
script.setAttribute("src", req);
head.appendChild(script);
}
return {
options: {},
parseNextUrl: function(result) {
if (!result || !result.data) { return; }
var data = result.data;
// Here is where I need the url
},
parseUrl: function(result) {
if (!result || !result.data) { return; }
var data = result.data;
for (var i = 0; i < data.length; i++) {
urlCallback( data[i].url + "/new_url/page?callback=parseUrls.parseNextUrl" );
}
},
showResult: function(options){
urlCallback( "http://start.url.com/page?callback=parseUrls.parseUrl" );
this.options = options;
}
};
})();
为了清楚起见,只要源请求完成,就会调用 parseNextUrl。这意味着到那时所有 urlCallback 调用都已经完成。