chrome 插件调用 jsonp 的问题

发布于 2022-08-27 13:04:33 字数 863 浏览 12 评论 0

我想针对 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

行至春深 2022-09-03 13:04:33

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文