私が正常に作業しているユーザースクリプトは、最初に読み込まれたGitHubページで動作します。 GitHubがPJAXでナビゲートされているときは、再適用する必要があります。github.comのリスニングGreasemonkeyユーザースクリプトのPJAXイベント
だから私は何とかPJAXの変更のためのリスナーを設定し、initialize
関数を再度実行する必要があります。
のGreasemonkey/Firefoxのセキュリティポリシーのために、それは私がunsafeWindow.require('jquery')
のajaxComplete
イベントにページのスクリプトやフックを検討しようとしましたが、リスナーがありませんでした
Error: Permission denied to access object
がスローされますので、unsafeWindow.history.pushState
にパッチを適用すると、動作しません。 (同じセキュリティポリシーが原因である可能性がありますが、エラーコンソールは空でした)。
PJAXコンテナエレメントにMutationObserver
/DOMSubtreeModified
よりも優れたソリューションがありますか?
このスクリプトはFirefox/Greasemonkeyを対象にしていますが、Chrome/Tampermonkeyで実行可能であれば、これは問題ありません。文書上のイベント:
$(document).on('pjax:end', ...)
FWIWバニラJSでの作業example:
'' pjax:end "'イベントのリスナーを 'document'に追加します。また、[pjaxでgithubスタイルのページ遷移を作成する方法](http://stackoverflow.com/q/8013818)の複製のように見えます。あなたが見ることができるように、サイトスクリプトが動的コンテナを上書きするため、MutationObserverも使用されています*時には* 。 – wOxxOm
@wOxxOmよかった、ありがとう! '$(document).on( 'pjax:end'、...)'は '@ require'で得られたjQueryのコピーで動作します。これを回答として投稿してください。 – estus