5

古い URL にアクセスできる「URL 変更前」イベントにリスナーを追加したいと考えています。window.onbeforeunloadページがリロードされない場合 (AJAX 駆動ページ) は起動しません。

これは、YouTube の動画ページで発生します。たとえば、右側のナビゲーション カラムで別の動画をクリックすると発生します。

私はこの投稿を読みましたwindow.location。ただし、これは古い URL をキャプチャしません。

これは Chrome 拡張機能用です。JavaScriptでURLが変更される前に検出する方法を探しています。

4

2 に答える 2

4

APIを使用する AJAX 駆動のページhistory(YouTube を含むほとんどのページ) の場合、history.pushState.

Chrome の場合、古い URL がspf-refererプロパティになります。(また、location.hrefpushState が起動している間も、 は古い URL に設定されます。)

したがって、次のようなコードが機能します。

var H               = window.history;
var oldPushState    = H.pushState;
H.pushState         = function (state) {
    if (typeof H.onpushstate == "function") {
        H.onpushstate ({state: state} );
    }
    return oldPushState.apply (H, arguments);
}
window.onpopstate = history.onpushstate = function (evt) {
    console.log ("Old URL: ", evt.state["spf-referer"]);
}

ターゲット ページのpushState機能をオーバーライドする必要があるため、コンテンツ スクリプトからこのコードを挿入する必要があることに注意してください。

于 2013-09-23T01:45:55.567 に答える
2

onUpdatedChrome 拡張機能を作成している場合は、タブの URL が変更されたときに発生するイベントをリッスンできます。詳細については、https://developer.chrome.com/extensions/tabs.html#event-onUpdatedをご覧ください。

于 2013-08-25T02:09:12.343 に答える