我想在所有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,我可以:
这最后一个选项甚至更奇怪,使用匹配有奇怪的行为;如果我使用以下任一项,我甚至无法在单击扩展按钮时显示我的脚本:
// @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==
解决方案需要几个步骤添加到底部的原始帖子中,以便其他人也可以学习。谢谢你的帮助。
删除@namespace 添加两个:
// @match *://*.youtube.com/*
// @noframes
答案 0 :(得分:1)
更改
// @namespace https://youtube.com
到
// @match https://youtube.com/*
答案 1 :(得分:1)
注意:
在Tampermonkey中指定网站的最佳方法是使用the @match
directive。 (或者使用@include
获得更多选项但性能更低且安全性更高"。
YouTube几乎总是使用www.
子域名,因此指令如
// @match https://youtube.com/*
几乎永远不会匹配。
有时,http://
仍有效。
根据您的说明,您可能不希望脚本处理iframed或嵌入内容。
因此,您需要与以下网址模式匹配的指令,并排除其他所有内容:
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!");