我想在我的 Greasemonkey/UserScript 更新可用时通知用户。但是,当用户从 Chrome Web Store 安装脚本时,我不想打扰,因为它具有自动更新功能。
我首先想到使用$.browser==chrome
但 Chrome 用户也可能使用 Tampermonkey 安装了它。 (此外,如果该网站更新 jQuery,$.browser
将停止工作)
那么,是否可以检测到它是通过 Chrome Web Store 安装的 UserScript?
也许最好只是让用户知道有可用的更新,而不必担心平台。另外还不清楚这个脚本的跨浏览器性能如何。您可能必须求助于浏览器嗅探(通常不推荐)才能绝对确定。
您可以使用the scriptHandler的财产GM_info object http://tampermonkey.net/documentation.php#GM_info,如果您只关心 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、脚本式、Safari 或更罕见)上运行。
因为目前只有大型引擎(Greasemonkey 和 Tampermonkey)支持GM_info
,如果您的用户脚本特别是跨浏览器,您将需要进行浏览器嗅探以区分极少数情况。
有关不需要 jQuery 的浏览器嗅探代码,请参阅此答案。 https://stackoverflow.com/a/2401861/331508
Note: A @grant
directive is not needed to use GM_info
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)