首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TamperMonkey名称空间将不适用于顶级域

TamperMonkey名称空间将不适用于顶级域
EN

Stack Overflow用户
提问于 2015-06-25 21:01:11
回答 2查看 1.2K关注 0票数 1

我只想在所有的TamperMonkey站点上运行这个YouTube.com脚本:

代码语言:javascript
复制
// ==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。我尝试过许多选择:

代码语言:javascript
复制
// @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散列参数。如需更多信息,请访问此论坛帖子:点击。代码:

代码语言:javascript
复制
// @include http://tampermonkey.net/*
// @include http://*
// @include https://*
// @include *

还有许多其他的可能性,但我似乎不能使范围只适用于YouTube,我也可以:

  • 将所有TamperMonkey代码应用于所有网站
  • 不向所有网站应用TamperMonkey代码
  • 当按下扩展时有TamperMonkey脚本出现,
    • 做绿色的
    • 做红人

  • 当按下扩展时不显示TamperMonkey脚本

最后一个选项更奇怪,使用match会有奇怪的行为;如果使用以下两种方法之一,我甚至无法让脚本在单击“扩展”按钮时出现:

代码语言:javascript
复制
// @match        https://youtube.com/*
// @match        *

但是,如果我根本不使用@match或使用:

代码语言:javascript
复制
// @match        */*

附加:我可以确认使用以下命令在扩展中单击Tamper猴子时不会产生任何脚本:

代码语言:javascript
复制
// ==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==

解决方案需要一些步骤,这些步骤被添加到底部的原始帖子中,以便其他人也可以学习。谢谢你的帮助。

删除@命名空间,同时添加:

代码语言:javascript
复制
// @match       *://*.youtube.com/*
// @noframes
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-25 21:45:10

注意:

  1. 在Tamper猴子中指定站点的最佳方法是使用 directive。(或者使用@include获得更多选项,但性能和“安全性”较低。)
  2. YouTube几乎总是使用www.子域,因此指令如下 // @match https://youtube.com/* 几乎永远都比不上。
  3. 偶尔,http://仍能工作。
  4. 根据您的描述,您可能不希望脚本工作在iframed或嵌入式内容上。

因此,您需要匹配以下URL模式并排除其他所有内容的指令:

代码语言:javascript
复制
https://www.youtube.com/*
http://www.youtube.com/*
https://youtube.com/*
http://youtube.com/*

documentation。完成所有工作的模式是:

代码语言:javascript
复制
// @match  *://*.youtube.com/*

把这一切结合在一起:

代码语言:javascript
复制
// ==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!");
票数 1
EN

Stack Overflow用户

发布于 2015-06-25 21:09:20

变化

代码语言:javascript
复制
// @namespace    https://youtube.com

代码语言:javascript
复制
// @match        https://youtube.com/*
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31060707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档