写了个 JavaScript,但是事件不生效。

2017-04-04 05:10:41 +08:00
 lslqtz
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。

2614 次点击
所在节点    JavaScript
4 条回复
lslqtz
2017-04-04 05:12:43 +08:00
试着用过 mouseout 之类的,不能得到页面区域外的位置。
beforeunload 则是 URL 修改成功,但是刷新时还是用原来的 URL 刷新,从而无效。。
lslqtz
2017-04-04 05:21:23 +08:00
然后目前没有实现的只有点击刷新按钮了,其它的全部看起来没问题了。。
lslqtz
2017-04-04 05:29:49 +08:00
顺便再问个问题:
像这种贴,有对应的节点,问问题是发到对应节点还是发问与答好...
lslqtz
2017-04-04 15:05:18 +08:00
然后问了挺久 只能用 mousemove 让在页面上移动时有效 停留 0.5 秒恢复原 URL

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/352384

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX