如何检测Chrome Store是否安装了用户脚本?

时间:2014-12-15 15:46:47

标签: javascript userscripts tampermonkey chrome-web-store

我希望在我的Greasemonkey / UserScript更新可用时通知用户。但是,当用户从Chrome网上应用店安装脚本时,我不想打扰,因为它具有自动更新功能。

我首先考虑使用$.browser==chrome,但Chrome用户也可能使用Tampermonkey安装了它。 (此外,如果网站更新jQuery,$.browser将停止工作)

那么,是否可以检测到它是通过Chrome网上应用店安装的UserScript?

1 个答案:

答案 0 :(得分:3)

可能最好让用户知道更新可用,而不用担心平台。此外,还不清楚这个脚本是如何跨浏览器的。你可能不得不求助于浏览器嗅探(通常不推荐),绝对确定。


如果您只关心Chrome和/或Firefox,则可以使用the scriptHandler property of the GM_info object

// ==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:

  

此用户脚本在Tampermonkey上运行。

Greasemonkey(Strictly Firefox):

  

此用户脚本在Greasemonkey上运行。

来自网上商店的Chrome或其他:

  

此用户脚本在纯Chrome(或Opera,或scriptish,或Safari,或更罕见)上运行。

因为只有大引擎(Greasemonkey和Tampermonkey)目前支持GM_info,如果您的用户特别是跨浏览器,则需要进行浏览器嗅探以区分罕见情况。
See this answer for browser-sniffing code that doesn't require jQuery.


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