JavaScript 取消链接默认行为问题

今天在测试《JavaScript DOM编程艺术(第2版)》中第69页代码时,遇到了问题。本来预期效果应该是点击链接后不跳转当前页面,而是另外弹出有个窗口。但结果却是页面跳转了。代码如下图所示:

经过一番询问与搜索后,发现问题出在"return false;"没有成功发挥其作用,所以没有取消链接的默认行为,将访问者带离了当前窗口。如果是如下图代码所写,其成功传达,那么结果就是想要实现的效果。

那这问题是怎么回事呢?(参见网址:a标签的取消默认行为 - SegmentFaulthttp://segmentfault.com/q/1010000002993720)

有个小Demo如下。

好吧,问题是怎么回事搞清楚了,但怎么解决呢?网上说都是说用event.preventDefault();有的说的更详细一点的就是要区分IE浏览器与非IE浏览器,他们阻止默认行为有部分差异,IE的应该是window.event.returnValue == false;还有得加上event.stopPropagation();阻止冒泡行为。然而。。。。。。我试了又试,并没有一个成功实现了取消默认行为的。

所以,暂时我并没有找到可以在分离JavaScript的同时,还能成功完成取消链接默认行为的办法,现在只能在a标签中写上onclick=""。

这真是一个悲伤的结局(╥╯^╰╥)

时间: 2024-11-02 22:25:55

JavaScript 取消链接默认行为问题的相关文章

Javascript 获取链接(url)参数的方法

qa项目可能需要客户端获取到url的参数,搜到一个很好的解决方法,记录在博客,省得以后找麻烦. 方法一:分解链接的方式 <script type="text/javascript"> /* * 说明:Javascript 获取链接(url)参数的方法 */ function getQueryString(name) { // 如果链接没有参数,或者链接中不存在我们要获取的参数,直接返回空 if(location.href.indexOf("?")==-1

JavaScript函数的默认参数(default parameter)

JavaScript函数的默认参数(default parameter) js函数参数的默认值都是undefined, ES5里,不支持直接在形参里写默认值.所以,要设置默认值,就要检测参数是否为undefined,按需求赋值. function multiply(a, b) { b = typeof b !== 'undefined' ? b : 1; return a*b; } multiply(5); // 5 multiply(5, 0); // 0 上面是MDN的相关例子,是比较严谨的

JavaScript阻止冒泡和取消事件默认行为

//功能:停止事件冒泡 function stopBubble(e) { if ( e && e.stopPropagation ) { e.stopPropagation(); } else { // ie old window.event.cancelBubble = true; } } //功能:阻止事件默认行为 function stopDefault( e ) { if ( e && e.preventDefault ) { e.preventDefault();

JavaScript取消默认控件并添加新控件(DOM编程艺术第11章)

这一章实现的这个功能我研究了好久,这个思路我感觉已经是现在的我要膜拜的了,我感觉我的逻辑还是有些问题. 第一个问题:vid.height与vid.videoHeight vid.height = vid.videoHeight; vid.weight = vid.videoWidth;//移除边框-配合实现无边框效果 vid.parentNode.style.height = vid.videoHeight + "px"; //将vid的父元素(那个div)也贴合vid // vide

移动端和pc端事件绑定方式以及取消浏览器默认样式和取消冒泡

### 两种绑定方式 (DOM0)1.obj.onclick = fn; (DOM2)2. ie:obj.attachEvent(事件名称,事件函数); 1.没有捕获(非标准的ie 标准的ie底下有 ie6到10) 2.事件名称有on 3.事件函数执行的顺序:标准ie->正序 非标准ie->倒序 4.this指向window 标准:obj.addEventListener(事件名称,事件函数,是否捕获); 1.有捕获 2.事件名称没有on 3.事件执行的顺序是正序 4.this触发该事件的对象

取消事件默认行为(移动端)

在编写功能时,遇到一个很有意思的事情,后来经过思索就解决了这个问题. 这个功能的需求是点击一个按钮,弹出对话框,其他部分笼罩一层灰色,点击灰色后弹出框消失,如果只是这样就比较好实现,但还有其他需求,那就是这个按钮所在的这个整体内容,点击它之后会进入另一个页面,所以我的思路是使用事件冒泡,判断是点击了按钮还是内容的其他部分来决定是弹出对话框还是进入另一个页面,在点击弹出框以外的笼罩层,弹出框和笼罩层就消失,到这一步为止,都实现得很顺利,但在测试时有意思的事情就出现了,在点击灰色笼罩层时,点击部分对

夺命雷公狗---javascript NO:16 默认行为1

1.什么是默认行为 在我们的HTML标签中,很多标签拥有自己的默认行为. 如: submit提交按钮:其会自动提交表单数据到处理页面 a标签:其会自动跳转到指定页面 有些情况下,我们并不需要这种默认行为. 如: 当我们未填写表单数据时,系统不应该直接提交表单数据到处理页面. 当我们单击删除链接时,如果用户没有确认是不应该直接跳转删除的. 2.组织默认行为 IE模型浏览器 window.event.returnValue = false; W3C模型浏览器 dom对象.事件 = function(

关于jquery的取消阻止默认事件

最近帮朋友做个东西,整个屏幕有一个遮罩层,但是这个遮罩层能滑动,于是百度了一下,返现,用 $('body').bind("touchmove",function(e){ e.preventDefault(); }); 这句话,就能阻止遮罩层的滑动,使得屏幕固定,但是当遮罩层消失的时候,这个屏幕依旧不能滑动,这是鱿鱼以上那个函数依然在执行,当时,一直在百度一个方法,就是如何取消阻止的默认行为 ,怎么也没百度出来,后来喝了口水,灵机一动,发现,只要把刚刚绑定的事件解除就好了,这样,e.pr

取消IE默认下载工具为迅雷

需求:企业访问内部WEB系统下载文件时,IE默认下载工具设置为迅雷,则弹出迅雷下载框.现需要直接弹出IE下载保存框. 方案:打开迅雷,进行撤销默认下载工具. 1.迅雷5: 1.1. 打开迅雷下载工具 1.2. 点击打开“配置”窗口鼠标点击下图红框中的图标,打开“配置面板”窗口.也可以使用快捷键[Alt+O],打开“配置面板”窗口(注意:是英文字母O,不是数字0). 1.3. 选择“配置面板”窗口的左边菜单“监视设置” 1.4. 取消第一个选项取消第一个选项:“迅雷为浏览器默认的下载工具(IE和默