我正在使用Greasemonkey脚本将某些文本转换为a Rally页面上的链接。重新加载页面时,脚本只能 。如果我以任何方式导航到页面(链接,浏览器向前/向后),脚本都不会运行,尽管Greasemonkey菜单在底部显示我的脚本,带有复选标记。
以下是一个示例网址:
https://rally1.rallydev.com/#/4745909548/detail/userstory/6138899084/changesets
我的匹配规则:
/^https://.*\.rallydev\.com/.*/changesets$/
我不知道哈希是否会导致问题,但重新加载时一切都很好。
不知道从哪里开始。任何帮助表示赞赏。
答案 0 :(得分:9)
无法确定发生了什么,因为目标页面位于付费墙后面,他们所称的“免费试用”机制会破坏大块。
以下是当前行为的一些可能原因:
<iframe>
,不会立即加载。changesets
结尾。此外,养成逃离正则表达式中间中的/
s的习惯。它并不总是需要,但如果你不这样做,它最终会在[审查]中咬你。
所以脚本应该使用:
// @include /^https:\/\/.*\.rallydev\.com\/.*\/changesets$/
开始,但见下文。
解决方案的步骤:
将您的@include
更改为http帐户以及URL中的尾随空格或尾随斜杠的可能性。使用:
// @include /^https?:\/\/.*\.rallydev\.com\/.*\/changesets(?:\s|\/)*$/
<iframe>
吗?如果是这样,那么iframe网址是什么?考虑使用以下代码:
if (window.top != window.self) {
//--- Don't run on/in frames or iframes.
return;
}
让脚本仅在(或不在)iframe中运行(如果适用)。
如果问题是由AJAX延迟(或加载新内容)引起的,请使用the waitForKeyElements()
utility中的"Fire Greasemonkey script on AJAX request"来解决问题。