
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 |