私はこれをやっていますが、うまくいきません:
window.addEventListener("load", function load(event){
alert('hola');
},false);
window.location.assign("about:blank");
それは Greasemonkey スクリプトです。新しい場所が読み込まれますが、アラートは表示されません。
私はこれをやっていますが、うまくいきません:
window.addEventListener("load", function load(event){
alert('hola');
},false);
window.location.assign("about:blank");
それは Greasemonkey スクリプトです。新しい場所が読み込まれますが、アラートは表示されません。
を変更するwindow.location
と、Greasemonkey スクリプトの現在のインスタンスが削除されます。場所の変更後に「コードを実行」するには、新しいページでトリガーするようにスクリプトを設定し (about:blank
この場合)、フラグを使用して、元のページをリダイレクトするこのスクリプトを介して新しいページに到達したことを通知する必要があります。
@include
スクリプトまたは@match
ディレクティブが新しいページで起動することを確認してください。GM_setValue()
意図的に生まれ変わったことをスクリプトに知らせるフラグを設定するために使用します。以下は、プロセスを説明する完全な作業スクリプトです。
// ==UserScript==
// @name _Fire after redirect to about:blank
// @include about:blank
// @include http://YOUR_SERVER.COM/YOUR_PATH/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_deleteValue
// ==/UserScript==
//-- Are we on a blank page after a redirect by this script?
var bAfterRedirect = GM_getValue ("YouHaveBeenRedirected", false);
//-- Always erase the stored flag.
GM_deleteValue ("YouHaveBeenRedirected");
if (bAfterRedirect && location == 'about:blank') {
//-- DO WHATEVER YOU WANT WITH THE BLANK/NEW PAGE HERE.
$("body").append (
'<h1>This content was added after a GM redirect.</h1>'
);
}
else if (location != 'about:blank') {
/*-- If we are on the original target page, signal our next incarnation
that it was triggered by a redirect. Then redirect to about:blank.
*/
GM_setValue ("YouHaveBeenRedirected", true);
location.assign ("about:blank");
}
URLのハッシュ(またはフラグメント)部分を変更するだけで、やりたいことは何でもできます。
window.location.assign("#hello")
alert("hola")
またはしたがって:
window.location.hash = "world"
alert("mondo")
ドキュメントがすでに読み込まれている場合、再度トリガーされることはないため、イベントonload
からドキュメントを実行することはできません。load
HTML5は、次のhashchange
ように使用できるイベントを提供します。
window.addEventListener("hashchange", function (event){
alert('change');
},false);
一部のjavascriptライブラリ(dojoが実装していることは知っています)はhashchange
、HTML5以外のブラウザを実装または同等のものです。これを利用するには、イベントの登録にそのライブラリの規則を使用する必要があります。