我希望在我的Greasemonkey / UserScript更新可用时通知用户。但是,当用户从Chrome网上应用店安装脚本时,我不想打扰,因为它具有自动更新功能。
我首先考虑使用$.browser==chrome
,但Chrome用户也可能使用Tampermonkey安装了它。 (此外,如果网站更新jQuery,$.browser
将停止工作)
那么,是否可以检测到它是通过Chrome网上应用店安装的UserScript?
答案 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
指令。