`

超链接的onlick和href

    博客分类:
  • jsp
阅读更多
链接的onclick 事件被先执行,其次是href 属性下的动作(页面跳转,或 javascript 伪链接);
假设链接中同时存在href 与onclick,如果想让href 属性下的动作不执行,onclick 必须得到一个false 的返回值;
如果页面过长有滚动条,且希望通过链接的 onclick 事件执行操作。应将它的 href 属性设为 javascript:void(0);,而不要是 #,这可以防止不必要的页面跳动;
如果在链接的 href 属性中调用一个有返回值的函数,当前页面的内容将被此函数的返回值代替;
在按住Shift键的情况下会有所区别。
今天我遇到的问题,在IE6.0里以href的形式访问不到parentNode。
尽量不要用javascript:协议做为A的href属性,这样不仅会导致不必要的触发window.onbeforeunload事件,在IE里面更会使gif动画图片停止播放。

相信大家一定对<a/>标签一定熟悉的不能在熟悉了,但是你们有没有深刻理解href和onclick两个属性的意义呢?之前用href和 onclick属性也是一直很随意,但后来出过几次问题,现在把这个问题总结到下面,希望对遇到过同样困惑的朋友有所帮助。 
首先摘录一篇文档:

在Javascript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值。 

void 操作符用法格式如下: 
1. javascript:void (expression) 
2. javascript:void expression 

expression 是一个要计算的 Javascript 标准的表达式。表达式外侧的圆括号是选的,但是写上去是一个好习惯。 (实现版本 Navigator 3.0) 

你以使用 void 操作符指定超级链接。表达式会被计算但是不会在当前文档处装入任何内容。 

下面的代码创建了一个超级链接,当用户点击以后不会发生任何事。当用户链接时,void(0) 计算为 0,但 Javascript 上没有任何效果。 

<A HREF="javascript:void(0)">单此处什么也不会发生</A> 

下面的代码创建了一个超级链接,用户单击时会提交表单。 

<A HREF="javascript:void(document.form.submit())"> 
单此处提交表单</A> 

下面代码则执行了subgo()函数,

<a href="javascript:void(0)" onclick="subgo()">点我</a>

在这里,javascript:void(0),没启实质上的作用,它仅仅是一个死链接,执行的函数是subgo()。

<a href="#" onclick="subgo()">点我</a>与<a href="javascript:void(0)" onclick="subgo()">点我</a>区别。

实际上 #包含了一个位置信息默认的锚是#top 也就是网页的上端 ,而javascript:void(0) 仅仅表示一个死链接,没有任何信息。所以调用脚本的时候最好用void(0) 

    href一般是指向一个URL地址,也可以调用javascript ,如href="javascript:xxx();",文档中推荐这样写:<a href=" javascript:void(0)" onclick="xxx();">xx</a>,但是这种方法在复杂环境有时会产生奇怪的问题,尽量不要用javascript:协议做为A的href属性,这样不仅会导致不必要的触发window.onbeforeunload事件,在IE里面更会使gif动画图片停止播放。

    链接的 onclick 事件被先执行,其次是 href 属性下的动作(页面跳转,或 javascript 伪链接),如果不想让href 属性下的动作执行,onclick 需要要返回 false ,一般是这样写onclick="xxx();return false;".

TabPane的JS源码,由于onclick没有返回FALSE,当IFRMAE中关闭TABPANE时会导致href执行,页面显示有问题。解决办法就是将下面代码复制到使用TAB的JSP中。

TabPane.prototype.appendTitle = function(tabpage){
var td = $create("td");
var strHTML = "<table class="" + TAB_STYLE_TABLE + "" border="0" cellspacing="0" cellpadding="0"><tr>";
strHTML +="<td><div class=""+TAB_STYLE_LEFT+""></div></td>";
strHTML +="<td nowarp class=""+TAB_STYLE_MID+"">";
strHTML +="<div style="white-space:nowrap;page-break-before: always;page-break-after: always;">";
strHTML += tabpage.getTitle();
strHTML +="</div></td>";
if(tabpage.showCloseButton){
strHTML +="<td nowarp class=""+TAB_STYLE_MID+"">";
strHTML +="<a class="close" href="#" onclick="$o(\"" + this.id + "\").getTab(\"" + tabpage.id + "\").close();return false;">";
if(isIE){
strHTML +="<div></div></a>";
}else{
strHTML +="<div class="close"></div></a>";
}
strHTML +="</td>";
}
if(tabpage.allowReload){
strHTML +="<td nowarp class=""+TAB_STYLE_MID+"">";
strHTML +="<a class="reload" href="#" onclick="$o(\"" + this.id + "\").getTab(\"" + tabpage.id + "\").reload();return false;">";
if(isIE){
strHTML +="<div></div></a>";
}else{
strHTML +="<div class="reload"></div></a>";
}
strHTML +="</td>";
}
strHTML +="<td><div class=""+TAB_STYLE_RIGHT+""></div></div>";
strHTML +="</td></tr></table>";
td.className = TAB_STYLE_NOMAL + this.styleSuffix;
td.innerHTML = strHTML;
tabpage.__titleTD = td;
tabpage.setTitleTD();
tabpage.initStatus();
this.__titleTR.insertBefore(td,this._titleTD);
tabpage.titleWidth = td.offsetWidth;
}
分享到:
评论

相关推荐

    html onlick函数详解

    html中关于onclick函数的详细解析,真的很不错奥!

    javascript中onclick(this)用法介绍

    this指触发事件的对象,接下来为大家分享下javascript中onclick(this)的用法,感兴趣的朋友可以参考下哈,希望对你有所帮助

    Android代码-ExpandableRecyclerView

    5.支持GroupItem,ChildItem的Onlick,OnLongClick事件。 6.展开收起带动画。 效果图: 使用步骤:加入依赖 compile 'com.drawthink:expandable-recyclerview:0.0.3' 1.继承BaseViewHolder,实现自己的ViewHolder ...

    jQuery动态移除与增加onclick属性的方法详解

    本文实例讲述了jQuery动态移除与增加onclick属性的方法。分享给大家供大家参考,具体如下: 这里给大家介绍利用jquery的removeAttr与attr事件来给a标签增加与删除onclick事件的具体操作方法,有需要了解的朋友可参考...

    VR-Project-1:CS 4331-002:CS中的主题:虚拟现实-项目1:“从内而外体验到的人类规模场景”

    如何将对象绑定到JavaScript函数(使用onlick =“ functionName()”) 文档对象模型如何工作(DOM) 充分考虑UX的前端设计技术 如何操纵3-D .gltf模型 常规JavaScript库用法 如何使用Chrome的网络开发工具 WebVR...

    深入分析Javascript事件代理

    很久很久以来,总感觉事件发生与事件代理到之间没什么鸟区别。...如果按照之前的我,我会怎么给每一个li标签,添加onlick呢?废话,要是我,肯定简单粗暴。 循环每一个li,然后全部绑定onlick。 于是我的代

    JavaScript event对象整理及详细介绍

    1. type:事件的类型,如onlick中的click; 2. srcElement/target:事件源,就是发生事件的元素; 3. button:声明被按下的鼠标键,整数,1代表左键,2代表右键,4代表中键,如果按下多个键,酒把这些值加起来,所以...

    blade-script:一个软件包,可以轻松地将已转译和缩小的脚本添加到刀片组件中

    该软件包可轻松将已转译和缩小的脚本添加到刀片组件中。 &lt;button class = "btn" onlick= "myFunction()" &gt;{{ $ slot }}&lt;/button&gt; function myFunction () { // Do something. } 介绍 如果您要向刀片...

    javascript 触发事件列表

    javascript 触发事件列表 单击事件___onclick 用户单击鼠标按键时产生的事件....如:打开页面" onlick="window.open ('xxxx.html','newwindow','width=456,height=230,toolbar=no,menubar=no,scrollbars=yes'); "&gt;

    Android ExpandableRecyclerView使用方法详解

    5.支持GroupItem,ChildItem的Onlick,OnLongClick事件。 6.展开收起带动画。 效果图: 使用步骤:加入依赖 compile 'com.drawthink:expandable-recyclerview:0.0.3' 1.继承BaseViewHolder,实

    javascript 触发事件列表 比较不错

    input type=”button” value=”打开页面” onlick=”window.open(‘xxxx.html’,’newwindow’,’width=456,height=230,toolbar=no,menubar=no,scrollbars=yes’);”&gt; 2.改变事件___onchange 当text或textarea...

Global site tag (gtag.js) - Google Analytics