因为插件打算利用jsonp来调用远程服务器上的API接口…而尝试了很多次都发现报错说对象不存在, 查了下文档, 原来是chrome的安全机制限制了content_scripts…

具体请看:

不能使用除了chrome.extension之外的chrome.* 的接口 不能访问它所在扩展中定义的函数和变量 不能访问web页面或其它content script中定义的函数和变量 不能做cross-site XMLHttpRequests

正是第三点导致了, 返回的jsonp无法调用content_scripts里面定义的全局函数…但是好险, content_scripts是有DOM操作的权限的…这也为我们提供了一个解决方案, 就是利用DOM的操作权限, 往web页面里面注入script脚本…

就像这样…创建一个script节点, 然后注入head或者body里面….

var script= document.createElement("script");
script.type = "text/javascript";
script.innerText='ISHGO = {go : function(url){console.log(url);}};';
var Head = document.getElementsByTagName('body').item(0);
Head.appendChild(script);