我试图编写一个书签,它将一个JSONP调用添加到这样的页面中:
javascript:(function(){
var myFunction = (window.function(data){alert('my function is firing with arg' + data)});
var j = 'http://localhost/jsonscript.js';
var s = document.createElement('script');
s.src = j;
document.getElementsByTagName('head')[0].appendChild(s);
})();
其中附加到页面中的脚本src包含
myFunction('foo');
但是当我单击书签时有一个错误--没有定义myFunction。如何将该函数“导出”到书签范围之外,以便从附加的脚本标记调用它?
编辑:我发现我可以用原始的JavaScript打包脚本元素的innerHTML。这很管用,但很难看。我还是想找个更好的办法。
发布于 2013-03-31 13:27:39
定义窗口对象上的函数:
window.myFunction = ...
对于JSONP请求,通常需要某种类型的计数器来增加,即:
var counter = 1;
var myFuncName = "myFunction" + counter;
var j = 'http://localhost/jsonscript.js?callback=' + myFuncName;
window[myFuncName] = function (data) {...};
// remove function after timeout expires
setTimeout(function () { delete window[myFuncName] }, 5000);
https://stackoverflow.com/questions/15734691
复制相似问题