我有一个Chrome扩展(https://chrome.google.com/webstore/detail/apsic-xbench-extension-fo/nhadbgflnognogbicnbeepnbpehlocgc),它在Chrome73更新后突然停止工作。
症状是,如果我转到扩展设计为工作的页面(https://translate.google.com/toolkit),并单击扩展图标,而不是运行后台页面代码,则会出现扩展的弹出菜单(就像我右击了图标一样)。
然而,如果我在本地加载完全相同的代码(而不是从商店),Chrome扩展运行得很好。
从存储加载的扩展的后台页面控制台似乎没有出现任何错误。如果我为页面操作的onClicked侦听器中的第一行设置了断点,它不会停止于Chrome store扩展(并且断点对于本地加载的扩展来说工作得很好)。
为什么我会得到不同的行为,如果我从Chrome商店加载扩展或我在本地加载它?
在Chrome72中,这个扩展运行良好。
发布于 2019-03-15 07:02:57
回答自己的问题:我追踪了这个问题。事实证明,如果Chrome扩展是使用Chrome 72从Chrome商店安装的,那么在更新到Chrome 73之后,它就不能立即工作。
但是,如果在更新Chrome 73之后,您删除了该扩展并将其从Chrome商店中重新添加,则Chrome扩展将再次工作。很奇怪,但这是真的。
发布于 2019-03-31 02:42:41
Chrome73注入了一些新的安全性。只需尝试使用chrome.runtime.sendMessage
将您的xHTTP请求移动到您的后台脚本,并通过SendResponse
回调获得响应。
在内容或弹出脚本中,将ajax替换为:
chrome.runtime.sendMessage(
{ action: "check", data: {/* params for url */}},
// callback with url response
function(response) {
if( response.success ) {
var myDataFromUrl = response.data;
...
} else {
console.log('Error with `check`,', response.data);
}
}
);
来自后台脚本:
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
var url = 'https://mysyte.com/';
if(request.action === 'check' ) {
url = url + 'check'
ajax( url, request.data,
success: function( d ) {
sendResponse({success: true, data: d});
},
error : function( d ) {
sendResponse({success: false, data: d});
}
);
}
});
function ajax( url, params, cbSuccess, cbError ) { ... }
https://stackoverflow.com/questions/55172878
复制相似问题