gpt4 book ai didi

javascript - TamperMonkey 命名空间不会作用于顶级域

转载 作者:行者123 更新时间:2023-11-30 16:47:15 43 4
gpt4 key购买 nike

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

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

删除@namespace添加两者:

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

最佳答案

注意:

  1. 在 Tampermonkey 中指定站点的最佳方式是使用 the @match directive . (或使用 @include 以获得更多选项,但性能和“安全性”较低。)

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

  3. 偶尔,http:// 仍然有效。

  4. 根据您的描述,您可能不希望脚本在 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!");

关于javascript - TamperMonkey 命名空间不会作用于顶级域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31060707/

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