【发布时间】:2016-10-30 23:10:06
【问题描述】:
我正在处理的用户脚本在最初加载的 GitHub 页面上成功运行。虽然在使用 PJAX 导航 GitHub 时需要重新应用。
所以我必须以某种方式为 PJAX 更改设置一个侦听器并再次运行 initialize 函数。
由于 Greasemonkey/Firefox 安全策略,修补 unsafeWindow.history.pushState 将不起作用,它会抛出
错误:访问对象的权限被拒绝
我尝试检查页面脚本并挂钩到unsafeWindow.require('jquery') 的ajaxComplete 事件,但未触发侦听器(可能是因为相同的安全策略,但错误控制台为空)。
在 PJAX 容器元素上是否有比 MutationObserver/DOMSubtreeModified 更好的解决方案?
该脚本针对 Firefox/Greasemonkey,但如果它适用于 Chrome/Tampermonkey,这不会有什么坏处。
【问题讨论】:
-
为
document上的"pjax:end"事件添加一个监听器。看起来也像 How to make github style page transitions by pjax 的副本。 FWIW 一个工作的example - 正如你所看到的,还使用了 MutationObserver,因为站点脚本有时会覆盖动态容器。 -
@wOxxOm 好的,非常感谢!
$(document).on('pjax:end', ...)适用于使用@require获得的 jQuery 副本。随意发布这个作为答案。
标签: javascript jquery github greasemonkey userscripts