Javascript Greasemonkey脚本仅在重新加载页面时运行
我正在编写一个Greasemonkey脚本,将一些文本转换为页面上的链接。只有在我重新加载页面时,脚本才能正常工作。如果我以任何方式(链接、浏览器前进/后退)导航到页面,脚本不会运行,尽管Greasemonkey菜单在底部显示我的脚本,并带有复选标记 以下是一个示例URL:Javascript Greasemonkey脚本仅在重新加载页面时运行,javascript,greasemonkey,rally,Javascript,Greasemonkey,Rally,我正在编写一个Greasemonkey脚本,将一些文本转换为页面上的链接。只有在我重新加载页面时,脚本才能正常工作。如果我以任何方式(链接、浏览器前进/后退)导航到页面,脚本不会运行,尽管Greasemonkey菜单在底部显示我的脚本,并带有复选标记 以下是一个示例URL: https://rally1.rallydev.com/#/4745909548/detail/userstory/6138899084/changesets 我的匹配规则: /^https://.*\.rallydev\
https://rally1.rallydev.com/#/4745909548/detail/userstory/6138899084/changesets
我的匹配规则:
/^https://.*\.rallydev\.com/.*/changesets$/
我不知道散列是否引起了问题,但当我重新加载时,一切都很好
不知道从这里到哪里去。感谢您提供的任何帮助。我们无法确定到底发生了什么,因为目标页面位于工资墙后面,而他们所谓的“免费试用”机制则是一团糟 以下是当前行为的一些可能原因:
中变更集
结尾也要养成在正则表达式中间逃出<代码> /<代码>的习惯。它并不总是需要的,但如果你不这样做,它最终会在[审查]中咬你一口。 因此,脚本应使用:
// @include /^https:\/\/.*\.rallydev\.com\/.*\/changesets$/
开始,但请参见下文
解决方案的步骤:
@include
,以考虑http以及URL中尾随空格或尾随斜杠的可能性。使用:
// @include /^https?:\/\/.*\.rallydev\.com\/.*\/changesets(?:\s|\/)*$/
中吗?如果是,iframe URL是什么(如果有的话)if (window.top != window.self) {
//--- Don't run on/in frames or iframes.
return;
}
使脚本仅在(或不在)iframe中运行(如适用)如果问题是由AJAX延迟(或加载新内容)引起的,请按中所示使用解决。如果在重新加载时可用,则我怀疑匹配是否重要……同意,我之所以包含该信息,是因为我想有人会问。:)这非常有帮助,非常感谢。这是一个AJAX问题,尽管一开始我被页面上链接的配置方式愚弄了。我尝试使用waitforkyelloments(),将规则应用于整个域,它似乎起到了作用。它有点重(希望我不需要加载jQuery),但它可以工作并且看起来很可靠。非常感谢,不客气。我曾经想过创建一个不需要jQuery的
waitforkyellements
,但除了最简单的脚本之外,其他脚本都使用jQuery。它并没有那么重,特别是当你使用@require
指令时,通用汽车在你的本地机器上运行它。jQuery令人敬畏的优点使脚本编写变得更加容易。非常感谢所有相关人员。我正在使用Amazon的签出过程,起初我没有意识到这一点,但他们正在使用AJAX加载每个“页面”,并通过window.location.pathname
更改URL。我将脚本更新为@include any page in the process,并轻松地将其转换为使用waitforkyelments
。这是一个3分钟的解决方案,可以解决一个巨大的调试噩梦。