var href=location.href;
function defaulturl() {
history.replaceState(null,null,href);
location.hash='#';
}
function newurl() {
history.replaceState(null,null,location.protocol+'//'+location.host+location.pathname);
location.hash='#Have fun!';
}
function lostblur() {
window.onblur=function () {
setTimeout(defaulturl,10);
};
}
newurl();
lostblur();
window.onfocus=function () {
lostblur();
setTimeout(newurl,10);
};
window.oncontextmenu=function () {
window.onblur=null;
defaulturl();
};
window.onkeyup=function () {
if (event['keyCode'] == 116) {
window.onblur=null;
window.onfocus=null;
defaulturl();
}};
window.onbeforeunload=function () {
window.onblur=null;
window.onfocus=null;
defaulturl();
};
其中出问题的部分是:
window.onbeforeunload=function () {
window.onblur=null;
window.onfocus=null;
defaulturl();
};
这段代码在我的浏览器上看已经生效了,但是刷新的时候仍然是使用原来的 URL 导致页面不正确。 按 F5 则是生效的,之前研究并加了
window.onkeyup=function () {
if (event['keyCode'] == 116) {
window.onblur=null;
window.onfocus=null;
defaulturl();
}};
绑定F5后快捷键刷新才可用,但是点击刷新按钮仍不行。 兼容浏览器是IE9+ / Chrome / Firefox 希望用这段JS代码达到的效果是: 在页面范围内,且页面是焦点,将URL参数隐藏,并将锚点设为#Have fun!。 在非焦点(复制URL,收藏等) / 点击刷新按钮 / F5刷新页面 / 打开右键菜单(创建快捷方式 / 打印)时恢复原URL。
1
lslqtz OP 试着用过 mouseout 之类的,不能得到页面区域外的位置。
beforeunload 则是 URL 修改成功,但是刷新时还是用原来的 URL 刷新,从而无效。。 |
2
lslqtz OP 然后目前没有实现的只有点击刷新按钮了,其它的全部看起来没问题了。。
|
3
lslqtz OP 顺便再问个问题:
像这种贴,有对应的节点,问问题是发到对应节点还是发问与答好... |
4
lslqtz OP 然后问了挺久 只能用 mousemove 让在页面上移动时有效 停留 0.5 秒恢复原 URL
|