我有一个Chrome扩展程序(https://chrome.google.com/webstore/detail/apsic-xbench-extension-fo/nhadbgflnognogbicnbeepnbpehlocgc),在Chrome 73更新后突然停止工作。
症状是,如果我转到扩展程序设计为可以使用的页面(https://translate.google.com/toolkit),然后单击扩展程序图标,而不是运行背景页面代码,则弹出菜单扩展名出现(就像我右键单击图标一样)。
但是,如果我在本地(而不是从商店)加载完全相同的代码,则Chrome扩展程序可以正常运行。
从商店中加载的扩展程序的后台页面控制台似乎没有发出任何错误。如果我在onClicked侦听器的第一行中为页面操作放置了一个断点,则它不会在Chrome Store扩展程序中停在那里(该断点对于本地加载的扩展程序来说效果很好)。
如果我从Chrome商店加载扩展程序或在本地加载扩展程序,为什么会有不同的行为?
在Chrome 72中,该扩展程序工作正常。
答案 0 :(得分:0)
回答自己的问题:我找到了问题所在。事实证明,如果使用Chrome 72从Chrome商店中安装了Chrome扩展程序,则在更新为Chrome 73之后就无法正常工作。
但是,如果在更新Chrome 73之后,您删除了扩展程序,然后从Chrome商店中再次添加了扩展程序,则Chrome扩展程序可以再次使用。奇怪但真实。
答案 1 :(得分:0)
Chrome 73注入了一些新的安全性。只需尝试使用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 ) { ... }