V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
lslqtz
V2EX  ›  JavaScript

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

  •  
  •   lslqtz · 2017-04-04 05:10:41 +08:00 · 2606 次点击
    这是一个创建于 2550 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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。

    4 条回复    2017-04-04 15:05:18 +08:00
    lslqtz
        1
    lslqtz  
    OP
       2017-04-04 05:12:43 +08:00
    试着用过 mouseout 之类的,不能得到页面区域外的位置。
    beforeunload 则是 URL 修改成功,但是刷新时还是用原来的 URL 刷新,从而无效。。
    lslqtz
        2
    lslqtz  
    OP
       2017-04-04 05:21:23 +08:00
    然后目前没有实现的只有点击刷新按钮了,其它的全部看起来没问题了。。
    lslqtz
        3
    lslqtz  
    OP
       2017-04-04 05:29:49 +08:00
    顺便再问个问题:
    像这种贴,有对应的节点,问问题是发到对应节点还是发问与答好...
    lslqtz
        4
    lslqtz  
    OP
       2017-04-04 15:05:18 +08:00
    然后问了挺久 只能用 mousemove 让在页面上移动时有效 停留 0.5 秒恢复原 URL
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1004 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 19:59 · PVG 03:59 · LAX 12:59 · JFK 15:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.