chrome 插件调用 jsonp 的问题
我想针对 weibo.com 写一个插件,有一个步骤需要获取我服务器上的数据。 由于浏览器控制了JS跨域,所以想到用jsonp的方式解决。
具体实现的步骤是:
1.服务器接口代码( url : http://127.0.0.1/push
):
echo "push(1,2,3)";
2.客户端接收代码
var src = document.createElement("script");
src.src="http://127.0.0.1/push";
document.body.appendChild(src);
var push = function(arg1,args2,arg3){
alert(arg1+args2+args3);
}
上边的代码直接在 F12
控制中心执行是没有问题的。
可是封装成chrome插件的时候提示 push is not defined .
我怀疑是因为插件和window不在同一个闭包内,所以导致插件定义的push函数,window不存在。
请问这个问题需要怎么修改 ? 或者有其他的方案实现跨域的访问么?
============================================================
目前问题已解决 ,在插件的 manifest.json 放开对任何域名的权限就不存在跨域问题。"permissions": [ "http://*/*" ],
但是在页面如何回调插件中定义的function呢,这个还没有弄明白,期待有人解惑??
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这个如果要做的话比较麻烦,首先chrome的机制导致了content-script和原始页面的域存在两个沙箱中,交汇的点只能存在于dom元素,如果一定要让页面调到你扩展的接口,你可以写一个script标签引入一个script文件,里面包含你的接口,然后页面就能够调用到你刚才这个文件的接口,然后这个接口中你可以在触发下点击某个dom元素,然后如果你content-script绑定了事件,那么就相当于页面间接调用了content-script的扩展