【问题标题】:Tampermonkey match all subdirectoriesTampermonkey 匹配所有子目录
【发布时间】:2020-02-29 21:56:33
【问题描述】:

我正在使用 Tampermonkey 在表单的每个页面上运行脚本:

https://markus.teach.cs.toronto.edu/csc413-2020-01/assignments/2/submissions/329/results/329/edit

一般结构在哪里

https://markus.teach.cs.toronto.edu/csc413-2020-01/assignments/2/submissions/#NUM/results/#NUM/edit

我正在尝试通过以下方式匹配此 URL: https://markus.teach.cs.toronto.edu/csc413-2020-01/assignments/2/*,但该模板未触发脚本。

完整的脚本如下:

// ==UserScript==
// @name         CSC413 autoscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Automation
// @author       II
// @match https://markus.teach.cs.toronto.edu/csc413-2020-01/assignments/2/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    console.log("script running");
    //code here
    console.log("finished execution");
})();

有人知道这里发生了什么吗?如果我使用泛型它匹配 @include https://*/*

【问题讨论】:

  • 最后,当我转到该链接时,我被重定向到 https://markus.teach.cs.toronto.edu/csc413-2020-01/?locale=en。你也会出现这种情况吗? (也许在比赛中需要locale=en,开始?)
  • 重定向可能只对未签名的用户显示。实际问题可能是该站点是一个现代 AJAX 驱动的 SPA,因此您应该匹配整个主机 https://markus.teach.cs.toronto.edu/* 并观察 URL 变化(通过覆盖 pushState 并监听 popstate)或观察 DOM 变化(定期或通过突变观察者)。应该有详细说明这些解决方案的答案。
  • 谢谢你们,是的@wOxxOm,一旦您进行身份验证,重定向就会消失。您的建议有效,但我仍然很好奇我们为什么会观察到这种行为。即使它是具有动态 URL 路由的 AJAX SPA,我们仍然应该能够检查和匹配 url;例如window.location.href返回由tampermonkey脚本指定的URL
  • 不,只有在第一次创建页面环境时才会注入用户脚本。至于通过 History API 进行动态导航,它不会改变页面环境。
  • 感谢您的所有见解。该站点是一个 React 应用程序,因此页面环境尚未准备好是有道理的,而我们实际看到的是在这里工作的 History API。此外,似乎因为 React 有一个影子 DOM,任何篡改/客户端脚本都会很痛苦,所以我现在可能会停止工作

标签: javascript regex google-chrome match tampermonkey


【解决方案1】:

您需要转义斜线和点,因为它们在正则表达式中具有特殊含义。 你需要在星星之前加一个点。点表示任何一个字符。明星量化它说“零或更多”。 .*数学一切。在你的代码中你写/*。上面写着“零个或多个斜线”

https:\/\/markus\.teach\.cs\.toronto\.edu\/csc413-2020-01\/assignments\/2\/.*

演示 https://regex101.com/r/CRtpWT/1

【讨论】:

    猜你喜欢
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 2020-06-30
    • 2013-01-07
    • 2017-11-19
    • 2014-10-01
    • 2012-03-31
    • 1970-01-01
    相关资源
    最近更新 更多