zoukankan      html  css  js  c++  java
  • A的href和onclick

    我以前在写<A>的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; }

  • 相关阅读:
    self 和 super 关键字
    NSString类
    函数和对象方法的区别
    求两个数是否互质及最大公约数
    TJU Problem 1644 Reverse Text
    TJU Problem 2520 Quicksum
    TJU Problem 2101 Bullseye
    TJU Problem 2548 Celebrity jeopardy
    poj 2586 Y2K Accounting Bug
    poj 2109 Power of Cryptography
  • 原文地址:https://www.cnblogs.com/iiot/p/3573218.html
Copyright © 2011-2022 走看看