javascript - chrome 插件调用 jsonp 的问题
高洛峰
高洛峰 2017-04-10 13:09:24
0
1
402

我想针对 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呢,这个还没有弄明白,期待有人解惑??

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(1)
洪涛

这个如果要做的话比较麻烦,首先chrome的机制导致了content-script和原始页面的域存在两个沙箱中,交汇的点只能存在于dom元素,如果一定要让页面调到你扩展的接口,你可以写一个script标签引入一个script文件,里面包含你的接口,然后页面就能够调用到你刚才这个文件的接口,然后这个接口中你可以在触发下点击某个dom元素,然后如果你content-script绑定了事件,那么就相当于页面间接调用了content-script的扩展

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板