首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Chrome扩展在Chrome 73之后不起作用,但仅当从商店加载时才有效

Chrome扩展在Chrome 73之后不起作用,但仅当从商店加载时才有效
EN

Stack Overflow用户
提问于 2019-03-15 06:20:50
回答 2查看 226关注 0票数 1

我有一个Chrome扩展(https://chrome.google.com/webstore/detail/apsic-xbench-extension-fo/nhadbgflnognogbicnbeepnbpehlocgc),它在Chrome73更新后突然停止工作。

症状是,如果我转到扩展设计为工作的页面(https://translate.google.com/toolkit),并单击扩展图标,而不是运行后台页面代码,则会出现扩展的弹出菜单(就像我右击了图标一样)。

然而,如果我在本地加载完全相同的代码(而不是从商店),Chrome扩展运行得很好。

从存储加载的扩展的后台页面控制台似乎没有出现任何错误。如果我为页面操作的onClicked侦听器中的第一行设置了断点,它不会停止于Chrome store扩展(并且断点对于本地加载的扩展来说工作得很好)。

为什么我会得到不同的行为,如果我从Chrome商店加载扩展或我在本地加载它?

在Chrome72中,这个扩展运行良好。

EN

回答 2

Stack Overflow用户

发布于 2019-03-15 07:02:57

回答自己的问题:我追踪了这个问题。事实证明,如果Chrome扩展是使用Chrome 72从Chrome商店安装的,那么在更新到Chrome 73之后,它就不能立即工作。

但是,如果在更新Chrome 73之后,您删除了该扩展并将其从Chrome商店中重新添加,则Chrome扩展将再次工作。很奇怪,但这是真的。

票数 0
EN

Stack Overflow用户

发布于 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 ) { ... }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55172878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档