我这样做但是不起作用:
window.addEventListener("load", function load(event){
alert('hola');
},false);
window.location.assign("about:blank");
这是一个Greasemonkey脚本。已加载新位置,但从不显示警报。
答案 0 :(得分:4)
更改window.location
后,将清除Greasemonkey脚本的当前实例。 To"运行代码"位置更改后,您需要将脚本设置为在新页面上触发(在这种情况下为about:blank
),然后使用标志通过此脚本重定向原始页面来表示已到达新页面。 / p>
@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");
}
答案 1 :(得分:1)
只改变url的hash(或fragment)部分,然后做你想做的任何事情,因此:
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浏览器的等价物。为了利用这一点,您需要使用该库的约定来注册事件。