Javascript 从chrome应用商店安装扩展时,chrome.runtime未定义

Javascript 从chrome应用商店安装扩展时,chrome.runtime未定义,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,当我使用google chrome浏览器console.log(chrome)时,我会获得某些属性,但我发现chrome的“runtime”属性不可用 app: Object csi: function () { native function GetCSI(); return GetCSI();} loadTimes: function () { native function GetLoadTimes(); return GetLoadTimes();} webstore: Object _

当我使用google chrome浏览器
console.log(chrome)
时,我会获得某些属性,但我发现chrome的“runtime”属性不可用

app: Object
csi: function () { native function GetCSI(); return GetCSI();}
loadTimes: function () { native function GetLoadTimes(); return GetLoadTimes();}
webstore: Object
__proto__: Object
__defineGetter__: function __defineGetter__() { [native code] }
__defineSetter__: function __defineSetter__() { [native code] }
__lookupGetter__: function __lookupGetter__() { [native code] }
__lookupSetter__: function __lookupSetter__() { [native code] }
constructor: function Object() { [native code] }
hasOwnProperty: function hasOwnProperty() { [native code] }
isPrototypeOf: function isPrototypeOf() { [native code] }
propertyIsEnumerable: function propertyIsEnumerable() { [native code] }
toLocaleString: function toLocaleString() { [native code] }
toString: function toString() { [native code] }
valueOf: function valueOf() { [native code] }
get __proto__: function __proto__() { [native code] }
set __proto__: function __proto__()
所以chrome.runtime是未定义的

因此,我无法将chrome.runtime.sendMessage用于我的扩展

如何解决上述问题

编辑:

我的代码是:

    if(typeof(chrome) === 'undefined'){
                result.isChromeBrowser = false;
                return next(result);
              } else {
                result.isChromeBrowser = true;
              }

console.log(chrome.runtime);  // undefined
    
              //check whether the chrome runtime is available or not ...
              if(!chrome.runtime){
                result.isChromeRuntimeAvailable = false;
                console.log(result);
              } else {
                result.isChromeRuntimeAvailable = true;
              }
编辑2:

从这里开始:。 我确信(通过上面的链接,如果我错了,请纠正我),网页可以与chrome扩展进行通信。但无法弥补从chrome商店安装扩展时的不足,但在从本地目录安装扩展的情况下工作得很好

我提供的外部连接为:

"externally_connectable": {
        "matches": [
            "*://local.mywebsite.com/*"
        ]
    }
我已将可与“matches”属性进行外部连接。。现在,当我加载解包目录以安装扩展时,我的网页将获得chrome.runtime。。但当我从chrome商店安装扩展时,同一浏览器上的同一网页无法获得chrome.runtime。。为什么会这样?? 最后,我仍然没有chrome.runtime在页面上://local.mywebsite.com/。
帮帮我。

您可能遇到以前已解决的问题:

尝试检查sendMessage的可用性。如果没有,那么chrome版本真的很旧:


希望我能帮忙,干杯

我的问题可以通过从chrome商店中完全删除插件并重新上传和发布插件来解决

问题是: 最初我没有“外部可连接”属性,因此无法定义
chrome.runtime
。后来当我加入时,我正在更新chrome插件。 主要原因可能是:“Chrome商店不会仅仅通过上传更新插件来修改‘manifest.json’(至少对于‘external_connectable’之类的某些属性)。您可能需要删除并重新上传以更新manifest.json”(这是我根据自己的经验得出的结论,如果我对一些有效的参考源有错误,请纠正我。)

所以“chrome.runtime”仍然没有定义


后来,当我删除插件并重新上传时,一切正常。

您是在使用扩展的控制台还是仍在页面上下文中?从页面上下文中。在控制台中,您将看到一个带有
的下拉列表,将其更改为您的扩展
铬扩展:
,然后运行chrome.runtime。要查找您的扩展id,请转到
Tools>Extensions
,当然我们需要扩展id来发送消息。。但我没有得到我们真的需要扩展id在这里得到chrome.runtime不等于未定义。。??请编辑问题问题问题是您在错误的控制台中执行
chrome.runtime
。我之前的评论显示了如何获得正确的控制台。上面的链接存在“sendMessage不是函数”的问题。但我的状态是“运行时可用”。关于版本。我是说,所有的工作都很好,为本地,但问题是当我安装插件从chrome商店。这意味着我希望没有与chrome版本相关的问题,因为我有最新的问题。当你上传新版本时,商店应该更新整个
manifest.json
,但是你的本地chrome安装不会立即得到更新。你可以通过去chrome://extensions/,启用开发人员模式,然后单击“立即更新扩展”。通常,通过“解包”加载扩展来对其进行迭代,然后仅在其工作时将其上载到存储区是更好的方法。