a标记跳转问题

1 篇文章 0 订阅

今天解决discuz弹窗不弹出直接跳转问题。dz中的代码是这样的<a href="{$url}"onclick="showWindow(this.id, this.href, 'get', 0);">我下意识的认为知啊要在showwindow函数中写return false,就会截断跳转,方便自己调试,然而添加之后仍然跳转想不明白是那里错了。随后onclick="showWindow(this.id, this.href, 'get', 0);return false;" 这样写就不会跳转,一时没反应过来 它函数里边加return false的区别,仔细想过之后才明白。在函数里写return false;结果是onclick="false"而正确的写法是onclick="return false" 差之千里。隐约记得以前也犯过这样的错误,为什么再遇到就印象很少呢,总结下是因为之前解决只是单纯的解决,并没有仔细理顺,这次犯这个错误也是没有仔细理顺

另外discuz中为什么 就onclick="showWindow(this.id, this.href, 'get', 0);" 这样就可以呢

加了断点调试过之后发现在showWindow函数结尾调用了 doane。由doane函数 阻止a标记跳转。


function doane(event, preventDefault, stopPropagation) {
    var preventDefault = isUndefined(preventDefault) ? 1 : preventDefault;
    var stopPropagation = isUndefined(stopPropagation) ? 1 : stopPropagation;
    e = event ? event : window.event;
    if(!e) {
        e = getEvent();
    }
    if(!e) {
        return null;
    }
    if(preventDefault) {
        if(e.preventDefault) {
            e.preventDefault();
        } else {
            e.returnValue = false;
        }
    }
    if(stopPropagation) {
        if(e.stopPropagation) {
            e.stopPropagation();
        } else {
            e.cancelBubble = true;
        }
    }
    return e;
}

stopPropagation的作用跟cancelBubble是一样的.都是用来阻止浏览器默认的事件冒泡行为.
他们的不同之处是:stopPropagation符合W3C标准.适用于FireFox等浏览器,不支持IE.而cancelBubble方法不符合W3C的标准.且只支持IE浏览器

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值