阻止链接跳转(二)

有时我们会遇到这种需要在a标签上添加click事件,并且跳转前处理一些事务,因此需要做一些处理,看很多人会这样写

<a href="#">link</a>,

但是发现点击后页面返回了顶部,所以又出现了这样的写法等

<a href="###">link</a>

但这样并不兼容所有浏览器,有些浏览器就会出现很怪异的形为。

因此,这个问题还需要其它方法来解决。

方法一

<a href="javascript:void(0)">百度</a>

void是一个操作符,void(0)返回undefined,地址不发生跳转

<a href="javascript:;">百度</a>

和以上相同,返回undefined

方法二

用return false

<a href="http://baidu.com" onclick="show()">百度</a>
<script>
    function show(){
        alert("我没跳转");
        return false;
    }
</script>

执行完以上代码你会深刻领悟到js 的坑。
首先你要知道 当 onclick 后面的事件不是一个函数名时,它会被包裹到一个匿名函数中执行。
以上就相当于是

obj.onclick=function(){
    show();
}

当点击链接的时候执行 onclick 里面的代码,而不是把show()当作事件处理程序,
return false 只是在 show() 这个函数中返回了并没有在 onclick 事件中返回。
因此还会发生跳转。

重点在这里:在事件处理函数的工作机制中,当在给某元素添加事件处理函数后,一旦事件发生,相应JavaScript代码就会执行,所调用的JavaScript代码的返回值被传递给事件处理函数。当我们给a标签添加onclick事件处理函数并点击a触发其后,如果相应JavaScript代码返回trueonclick事件处理函数就会认为这个链接被点击了,同样的若返回false即会认为链接未被点击。
所以 可以这样写:

<a href="http://www.baidu.com" onclick=" myjs(); return false;">百度 </a>
<a href="http://www.baidu.com" onclick=" return false; ">百度</a>

方法三

阻止默认事件 preventDefault()

但是preventDefault()阻止事件的默认行为不支持IE,所以在IE中要使用returnValue来阻止事件默认行为

<a href="http://www.baidu.com" id="test" onclick="stop()">百度</a> 

   function stop(event){
    //IE和Chrome下是window.event 火狐下是event
     event = event || window.event;
     if(event.preventDefault){
        event.preventDefault();
     }else{
        event.returnValue = false;
     }
     //target才是点击的元素 IE和谷歌下是srcElement 火狐下是target
     var target = event.target || event.srcElement;
     //获取元素内部元素
     alert(target.innerHTML);
    };
<a href="http://www.baidu.com" id="test"> 百度 </a> 

var test = document.getElementById('test');
         function stopDefault( e )
         {
            if ( e && e.preventDefault )
              e.preventDefault();
              else
                 window.event.returnValue = false;
         }
         test.onclick = function(e)
         {
              stopDefault(e);
         } 

原文地址:https://www.cnblogs.com/echoing/p/9656850.html

时间: 2024-08-02 17:42:56

阻止链接跳转(二)的相关文章

阻止链接跳转(一)

href="javascript:void(0);"含义 href="javascript:void(0);"这个的含义是,让超链接去执行一个js函数,而不是去跳转到一个地址, 而void(0)表示一个空的方法,也就是不执行js函数. 为什么要使用href="javascript:void(0);"? javascript:是伪协议,表示url的内容通过javascript执行.void(0)表示不作任何操作,这样会防止链接跳转到其他页面.这么做

微信中点击链接或者扫描二维码直接跳转外部浏览器打开指定网页下载

相信做微信推广的朋友一定都遇到这种情况的,当你的网页中有直接链接apk下载的时候会没有反映的,是因为在微信内是无法下载软件.手机APP等,那么这个时候一般的解决方案就是:跳转到手机浏览器打开我们的推广链接,这个要怎么做呢? 桔子跳转是一款基于微信后端开发了一款微信营销下载推广助手,使用了本插件生成的链接,用户在微信任意环境下点击链接或者扫描二维码,可以实现直接跳转手机默认浏览器并打开指定网页. 1.打开 桔子跳转 网址:http://www.qijieworld.com/ 2.准备好我们的推广链

微信中点击链接或者扫描二维码可以直接打开指定网页下载

相信做微信推广的朋友一定都遇到这种情况的,当你的网页中有直接链接apk下载的时候会没有反映的,是因为在微信内是无法下载软件.手机APP等,那么这个时候一般的解决方案就是:跳转到手机浏览器打开我们的推广链接,这个怎么做呢? 月牙跳转是一款基于微信后端开发了一款微信营销下载推广助手,使用了本插件生成的链接,用户在微信任意环境下点击链接或者扫描二维码,可以实现直接跳转手机默认浏览器并打开指定网页. 1.打开 月牙跳转 网址:http://www.aizhuanlove.cn/ 2.准备好我们的推广链接

在微信中,实现微信点击链接或者扫描二维码在浏览器中打开指定的链接

这个问题我查看了许多资料,最后总结一下: 我首先看了IOS端微信关于下载app的整个逻辑: 关于公众号里面关于微官网里面的app下载,如果你将你的应用中在微信开发平台认证过来,这个是要掏钱的:你点微官网app的下载,是可以直接跳到APP Store里面,检测这个应用是否已经下载,如果下载,直接打开: 而对于android 端,相比较IOS,就有更多方法,实现这个可能了. 1:微信开发平台认证,我要下载的链接,放在认证里面(不过不是单独的下载链接,你必须上传你的app到应用商城里面的下载地址):费

微信点击链接或者扫描二维码在浏览器中打开指定的链接

这个问题我查看了许多资料,最后总结一下: 我首先看了IOS端微信关于下载app的整个逻辑: 关于公众号里面关于微官网里面的app下载,如果你将你的应用中在微信开发平台认证过来,这个是要掏钱的:你点微官网app的下载,是可以直接跳到APP Store里面,检测这个应用是否已经下载,如果下载,直接打开: 而对于android 端,相比较IOS,就有更多方法,实现这个可能了. 1:微信开发平台认证,我要下载的链接,放在认证里面(不过不是单独的下载链接,你必须上传你的app到应用商城里面的下载地址):费

微信内点击链接或扫描二维码可直接用外部浏览器打开H5链接的解决方案

很多朋友问我怎么解决微信内点击链接或扫描二维码可以直接跳出微信在外部浏览器打开网页链接,其实这并不难,只要我们实现微信跳转功能即可.下面给大家介绍这个功能 功能目的 生成微信跳转链接,实现微信内置浏览器跳转外部浏览器打开网页.(该方案适合推广APP及其他H5页面) 功能效果 功能实现后, 苹果用户即可在微信内直接下载app也可以跳转浏览器下载,安卓用户则自动打开手机浏览器下载app, 如果不含下载文件,则直接从微信内跳转到外部浏览器访问指定页面 .下面是含app下载文件的实现效果: 1. 苹果跳

主攻ASP.NET.4.5.1 MVC5.0之重生:政府行政网站常用友情链接跳转javascript[干货分享]

<!-----------------------------------> <script language="JavaScript" type="text/JavaScript"> <!-- function MM_jumpMenu(targ, selObj, restore) { //v3.0 window.open(selObj.options[selObj.selectedIndex].value); if (restore)

页面链接跳转方法

一.window.location.href 是实现页面链接跳转 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>浏览器对象</title> <style> div{ width: 500px; margin:0 auto; } </style> </head> <

HTML阻止iframe跳转页面并使用iframe在页面内嵌微信网页版

昨天看到这篇文章[置顶]开源组件NanUI一周年 - 使用HTML/CSS/JS来构建.Net Winform应用程序界面 就想弄一个winform结合html5的一个小东西,突有兴致,想在里面嵌套一个微信网页版. 好了,想法一出来,就行动吧,最终效果如下图: 一开始就打算在页面里面嵌套一个iframe指向https://wx.qq.com就OK了,但是我还是太天真,微信网页版会自动跳转.结果如下图: 于是上网搜了一下阻止iframe跳转的办法,就是在iframe标签加上 security="r