TamperMonkey 命名空间不会作用于顶级域
TamperMonkey namespacing will not scope to top level domain
我想 运行 在所有 YouTube.com 网站上独家使用此 TamperMonkey 脚本:
// ==UserScript==
// @name YouTubeFakeScriptName
// @version 0.3
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// @grant GM_addStyle
// ==/UserScript==
// Insert any JavaScript here.
这就是问题所在,它不仅限于 YouTube。
我尝试了很多选择:
// @namespace http://youtube.com
// @namespace https://youtube.com
// @namespace https://youtube.com/
// @namespace https://youtube.com/*
// @namespace youtube.com
// @namespace *
// @namespace */youtube.com/*
与@include 类似,这是它在 http://tampermonkey.net/documentation.php 上所说的内容
该脚本的页面应该运行。允许多个标记实例。
请注意 @include
不支持 URL 哈希参数。请访问此论坛主题以获取更多信息:单击。
代码:
// @include http://tampermonkey.net/*
// @include http://*
// @include https://*
// @include *
除了许多其他可能性,但我似乎无法将范围仅适用于 YouTube,我可以:
- 将所有 TamperMonkey 代码应用于所有网站
- 不对所有网站应用 TamperMonkey 代码
- 按下扩展名时出现 TamperMonkey 脚本
- 成为绿色
- 成为红色
- 按下扩展名时不显示 TamperMonkey 脚本
最后一个选项更奇怪,使用 match 有奇怪的行为;如果我使用以下任一方法,我什至无法让我的脚本在单击扩展按钮时出现:
// @match https://youtube.com/*
// @match *
但如果我根本不使用@match 或使用:
,脚本就会出现
// @match */*
附加:我可以确认使用以下内容在单击 Tampermonkey 时不会在扩展程序中生成任何脚本:
// ==UserScript==
// @name YouTubeRandomAppHere
// @match https://youtube.com/*
// @version 0.3
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// @grant GM_addStyle
// ==/UserScript==
解决方案需要几个步骤,在底部添加到原始post,以便其他人也可以学习。谢谢你的帮助。
删除@namespace
同时添加:
// @match *://*.youtube.com/*
// @noframes
改变
// @namespace https://youtube.com
到
// @match https://youtube.com/*
注:
在 Tampermonkey 中指定站点的最佳方式是使用 the @match
directive。 (或者使用 @include
以获得更多选项但性能较低,并且使用 "safety"。)
YouTube 几乎总是使用 www.
子域,因此指令如
// @match https://youtube.com/*
几乎永远不会匹配。
偶尔,http://
仍然有效。
根据您的描述,您可能不希望脚本在 iframed 或嵌入式内容上运行。
因此您需要符合以下 URL 模式并排除其他所有内容的指令:
https://www.youtube.com/*
http://www.youtube.com/*
https://youtube.com/*
http://youtube.com/*
参见the Match Patterns documentation。执行所有操作的模式是:
// @match *://*.youtube.com/*
综合起来:
// ==UserScript==
// @name YouTubeRandomAppHere
// @match *://*.youtube.com/*
// @version 0.3
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// @grant GM_addStyle
// @noframes
// ==/UserScript==
alert ("Hello World!");
我想 运行 在所有 YouTube.com 网站上独家使用此 TamperMonkey 脚本:
// ==UserScript==
// @name YouTubeFakeScriptName
// @version 0.3
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// @grant GM_addStyle
// ==/UserScript==
// Insert any JavaScript here.
这就是问题所在,它不仅限于 YouTube。 我尝试了很多选择:
// @namespace http://youtube.com
// @namespace https://youtube.com
// @namespace https://youtube.com/
// @namespace https://youtube.com/*
// @namespace youtube.com
// @namespace *
// @namespace */youtube.com/*
与@include 类似,这是它在 http://tampermonkey.net/documentation.php 上所说的内容
该脚本的页面应该运行。允许多个标记实例。
请注意 @include
不支持 URL 哈希参数。请访问此论坛主题以获取更多信息:单击。
代码:
// @include http://tampermonkey.net/*
// @include http://*
// @include https://*
// @include *
除了许多其他可能性,但我似乎无法将范围仅适用于 YouTube,我可以:
- 将所有 TamperMonkey 代码应用于所有网站
- 不对所有网站应用 TamperMonkey 代码
- 按下扩展名时出现 TamperMonkey 脚本
- 成为绿色
- 成为红色
- 按下扩展名时不显示 TamperMonkey 脚本
最后一个选项更奇怪,使用 match 有奇怪的行为;如果我使用以下任一方法,我什至无法让我的脚本在单击扩展按钮时出现:
// @match https://youtube.com/*
// @match *
但如果我根本不使用@match 或使用:
,脚本就会出现// @match */*
附加:我可以确认使用以下内容在单击 Tampermonkey 时不会在扩展程序中生成任何脚本:
// ==UserScript==
// @name YouTubeRandomAppHere
// @match https://youtube.com/*
// @version 0.3
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// @grant GM_addStyle
// ==/UserScript==
解决方案需要几个步骤,在底部添加到原始post,以便其他人也可以学习。谢谢你的帮助。
删除@namespace 同时添加:
// @match *://*.youtube.com/*
// @noframes
改变
// @namespace https://youtube.com
到
// @match https://youtube.com/*
注:
在 Tampermonkey 中指定站点的最佳方式是使用 the
@match
directive。 (或者使用@include
以获得更多选项但性能较低,并且使用 "safety"。)YouTube 几乎总是使用
www.
子域,因此指令如
// @match https://youtube.com/*
几乎永远不会匹配。偶尔,
http://
仍然有效。根据您的描述,您可能不希望脚本在 iframed 或嵌入式内容上运行。
因此您需要符合以下 URL 模式并排除其他所有内容的指令:
https://www.youtube.com/*
http://www.youtube.com/*
https://youtube.com/*
http://youtube.com/*
参见the Match Patterns documentation。执行所有操作的模式是:
// @match *://*.youtube.com/*
综合起来:
// ==UserScript==
// @name YouTubeRandomAppHere
// @match *://*.youtube.com/*
// @version 0.3
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// @grant GM_addStyle
// @noframes
// ==/UserScript==
alert ("Hello World!");