所以我知道您可以获取用户脚本的版本信息,并将其用作用户脚本中的变量,就像...
// @version 1.2.1
// @grant GM_info
var version = GM_info.script.version;
console.log(`${version}`); // 1.2.1
我认为我可以在另一个网页上使用该变量。在这种情况下,我想在安装说明页面上显示最新版本,以便说出“脚本名称v.1.2.1”的含义
我的页面(install.html)上有这样的标签
<td>Script Name v.<span id="version"></span></td>
我在install.html页面上使用脚本标记链接了用户脚本(这可能是无法正常工作的原因):
<script src="Scripts/scriptName.user.js"></script>
带有一行代码
document.getElementById("version").innerText=`${version}`;
我在做什么错,还是有可能的。
注意:即使该人尚未安装用户脚本,我也希望它能正常工作。
答案 0 :(得分:1)
是的,您可以在网页上显示用户脚本数据,前提是该网页或您的托管服务器可以查看并GET
脚本(可能是跨域的)。
但是<script src="Scripts/scriptName.user.js">
无效,因为:
<script>
标签(CORS被阻止)。或者,有些这样做,但是发送了错误的mime类型。<script>
个节点触发,如果可能的话,这将是重大的安全灾难。GM_info
将不可用。@require
或@resource
资产)。 (并且不是页面独立加载的。)
例如,对于this userscript:
// ==UserScript==
// @name StackExchange, Add kbd, sup, and sub shortcuts
...
// @version 4.2
...
以下代码将获取版本:
$.get ("https://cdn.jsdelivr.net/gh/BrockA/SE-misc/Add_kbd_sup_sub_shortcuts.user.js", scrptTxt => {
var versionMtch = scrptTxt.match (/\/\/\s+@version\s+([0-9.]+)/i);
if (versionMtch && versionMtch.length > 1) {
console.log ("The script is version: ", versionMtch[1]);
}
else {
console.log ("Version metadata not found.");
}
} );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
或HTML,您可以将其放在网页的末尾:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$(document).ready ( () => {
$.get ("https://cdn.jsdelivr.net/gh/BrockA/SE-misc/Add_kbd_sup_sub_shortcuts.user.js"
, scrptTxt => {
var versionMtch = scrptTxt.match (/\/\/\s+@version\s+([0-9.]+)/i);
if (versionMtch && versionMtch.length > 1) {
console.log ("The script is version: ", versionMtch[1]);
}
else {
console.log ("Version metadata not found.");
}
} );
} );
</script>
</body></html>