TamperMonkey命名空间不会扩展到顶级域

时间:2015-06-25 21:01:12

标签: javascript youtube tampermonkey

我想在所有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        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

2 个答案:

答案 0 :(得分:1)

更改

// @namespace    https://youtube.com

// @match        https://youtube.com/*

答案 1 :(得分:1)

注意:

  1. 在Tampermonkey中指定网站的最佳方法是使用the @match directive。 (或者使用@include获得更多选项但性能更低且安全性更高"。

  2. YouTube几乎总是使用www.子域名,因此指令如
    // @match https://youtube.com/*
    几乎永远不会匹配。

  3. 有时,http://仍有效。

  4. 根据您的说明,您可能不希望脚本处理iframed或嵌入内容。

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

    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!");