【发布时间】:2014-10-26 02:02:29
【问题描述】:
我正在尝试通过 Safari 扩展从 Reddit 加载一些数据。我正在使用 JSONP 模式来创建回调函数并将新的 src 附加到脚本。但是,看起来有两个窗口命名空间,并且我动态创建的函数不适用于动态添加的脚本的上下文。
此链接似乎详细说明了 chrome 的问题,我猜这与我在 Safari 中的问题相似。
JSONP request in chrome extension, callback function doesn't exist?
这是代码(在扩展之外工作):
function jsonp(url, callback) {
var callbackName = 'jsonp_callback_' + Math.round(100000 * Math.random());
window[callbackName] = function(data) {
delete window[callbackName];
callback(data);
};
console.log('about to create script');
var script = document.createElement('script');
script.src = url + (url.indexOf('?') >= 0 ? '&' : '?') + 'jsonp=' + callbackName;
document.body.appendChild(script);
console.log('script should be appended');
}
function getImages(){
jsonp('http://www.reddit.com/r/cats/.json', function(data) {
data.data.children.forEach(function(el){
console.log(el.data.url);
});
});
}
有什么想法和解决方法吗?
谢谢!
【问题讨论】:
标签: javascript safari jsonp safari-extension