【发布时间】: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