gpt4 book ai didi

javascript - 我可以获取用户脚本的版本并在另一个网页上使用它吗?

转载 作者:行者123 更新时间:2023-12-03 00:42:48 30 4
gpt4 key购买 nike

所以我知道您可以获取用户脚本的版本信息并将其用作用户脚本中的变量,如下所示...

// @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}`;

我做错了什么,或者这是否可能。

注意:即使该人尚未安装用户脚本,我也希望此功能能够正常工作。

最佳答案

是的,您可以在网页上显示用户脚本数据,前提是该网页或您的托管服务器可以看到和 GET脚本(可能跨域)。

但是<script src="Scripts/scriptName.user.js">行不通,因为:

  1. 它读入脚本并将其作为普通 JavaScript 运行。您无法阅读源代码或隐藏脚本元数据的注释。
  2. 许多脚本主机(例如 GitHub)不会将文件提供给 <script>完全没有标签(CORS 被阻止)。或者,有些确实发送了错误的 MIME 类型。
  3. Tampermonkey 无法为 <script> 开火节点,如果可能的话将是一场重大的安全灾难。
  4. 很明显,GM_info将不可用。
  5. 事实上,如果脚本使用任何 Tampermonkey 原生函数,即使加载也会崩溃。请注意,这并不意味着元数据。这本身是无害的。
  6. 同上,如果 @require@resource需要 Assets 。 (并且不由页面独立加载。)


您必须将用户脚本作为文本读入,然后解析该字符串以获取版本信息。

例如,对于 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>

关于javascript - 我可以获取用户脚本的版本并在另一个网页上使用它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53369092/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com