Javascript 如何检测是否从Chrome应用商店安装了userscript?

Javascript 如何检测是否从Chrome应用商店安装了userscript?,javascript,userscripts,tampermonkey,chrome-web-store,Javascript,Userscripts,Tampermonkey,Chrome Web Store,当我的Greasemonkey/UserScript更新可用时,我想通知用户。但是,当用户从Chrome Web Store安装了脚本时,我不想麻烦,因为它具有自动更新功能 我首先考虑使用$。browser==chrome,但也可能是chrome用户使用Tampermonkey安装的。(此外,如果站点将更新jQuery,$。浏览器将停止工作) 那么,是否有可能检测到它是通过Chrome Web Store安装的用户脚本?最好让用户知道有更新可用,而不必担心平台。此外,还不清楚该脚本是如何跨浏览器

当我的Greasemonkey/UserScript更新可用时,我想通知用户。但是,当用户从Chrome Web Store安装了脚本时,我不想麻烦,因为它具有自动更新功能

我首先考虑使用
$。browser==chrome
,但也可能是chrome用户使用Tampermonkey安装的。(此外,如果站点将更新jQuery,
$。浏览器将停止工作)


那么,是否有可能检测到它是通过Chrome Web Store安装的用户脚本?

最好让用户知道有更新可用,而不必担心平台。此外,还不清楚该脚本是如何跨浏览器的。您可能必须求助于浏览器嗅探(通常不推荐)以确保绝对安全


如果您只关心Chrome和/或Firefox,则可以使用:

// ==UserScript==
// @name     _Rough script handler detector
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// ==/UserScript==
var scriptEngine;

if (typeof GM_info === "undefined") {
    scriptEngine = "plain Chrome (Or Opera, or scriptish, or Safari, or rarer)";
    // See https://stackoverflow.com/a/2401861/331508 for optional browser sniffing code.
}
else {
    scriptEngine = GM_info.scriptHandler  ||  "Greasemonkey";
}
console.log ('This userscript is running on ' + scriptEngine + '.');
这将产生:
猴子:

此用户脚本正在Tampermonkey上运行

Greasemonkey(严格来说是Firefox):

此用户脚本正在Greasemonkey上运行

网上商店的Chrome,或其他:

此用户脚本在纯Chrome(或Opera、scriptish、Safari或Rare)上运行

因为目前只有大型引擎(Greasemonkey和Tampermonkey)支持
GM_信息
,如果您的用户脚本特别跨浏览器,您将需要进行浏览器嗅探,以便在较少见的情况下进行区分。


注意:使用
GM_info
不需要
@grant
指令