저는 72d4ced2cc960a6bc2541984146fdaaa의 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())">
여기에 양식을 제출하세요63505a6f727f70c8bd4066f3066dcb9d
다음 코드는 subgo() 함수
<a href="javascript:void(0)" onclick="subgo()">点我</a>
를 실행합니다. 여기서 javascript:void(0)는 실제로 활성화되지 않은 기능입니다. 데드 링크이고 실행된 함수는 subgo()입니다.
点我与<a href="javascript:void(0)" onclick="subgo()">点我</a>区别。
사실 #에는 위치 정보가 포함되어 있습니다. 기본 앵커는 웹 페이지의 상단인 #top이고 javascript:void(0)는 아무런 정보도 없는 데드 링크만 나타냅니다. 따라서 href="javascript:xxx();"와 같은 스크립트 호출이 일반적으로 URL 주소를 가리키는 경우 void(0)
을 사용하는 것이 가장 좋습니다. 문서에서는 다음과 같이 작성할 것을 권장합니다. 예: 97645ab94f319ea0ad8ad3c2666043a5xx5db79b134e9f6b82c0b36e0489ee08ed 그러나 이 방법은 때때로 복잡한 환경에서 이상한 문제를 야기합니다. 프로토콜을 A href 속성으로 지정하면 window.onbeforeunload 이벤트가 불필요하게 트리거될 뿐만 아니라 애니메이션 gif 이미지가 IE에서 재생을 중지하게 됩니다.
링크의 onclick 이벤트가 먼저 실행된 다음 href 속성(페이지 점프 또는 자바스크립트 의사 링크) 아래의 작업이 실행된다는 것을 알고 있습니다. onclick은 false를 반환해야 합니다. 일반적으로 TabPane의 JS 소스 코드는 다음과 같이 작성됩니다. onclick="xxx();return false;".
TabPane은 TABPANE이 닫힐 때 FALSE를 반환하지 않습니다. IFRMAE의 경우 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><p class=""+TAB_STYLE_LEFT+""></p></td>"; strHTML +="<td nowarp class=""+TAB_STYLE_MID+"">"; strHTML +="<p style="white-space:nowrap;page-break-before: always;page-break-after: always;">"; strHTML += tabpage.getTitle(); strHTML +="</p></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 +="<p></p></a>"; }else{ strHTML +="<p class="close"></p></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 +="<p></p></a>"; }else{ strHTML +="<p class="reload"></p></a>"; } strHTML +="</td>"; } strHTML +="<td><p class=""+TAB_STYLE_RIGHT+""></p></p>"; 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; }
a439bf1a004d41787960405e04afa1b2 링크가 새 페이지로 연결되지 않고 대신 js 코드 조각을 실행하도록 작성되었습니다. onclick과 동일한 효과를 가질 수 있습니다. 일반적으로 스크립트를 호출하려면 onclick 이벤트에 코드를 작성해야 합니다. href='javascript:function을 사용하는 것은 권장되지 않습니다. ()' 이렇게 작성하면 href 속성에 js 코드가 설정된 후 일부 브라우저에서 다른 불필요한 이벤트가 발생할 수 있기 때문입니다. 의도하지 않은 효과를 초래합니다.그리고 onclick 이벤트는 href 속성보다 먼저 실행되므로 먼저 트리거됩니다. onclick은 href을 트리거하므로 페이지가 이동하는 것을 원하지 않으면 다음을 설정할 수 있습니다. onclick의 js 코드는 마지막에 false를 반환하므로 href 내부의 내용은 실행되지 않습니다. Ajax 애플리케이션에서 다음과 같이 더 작성합니다. , 이 링크가 점프하지 않고 js 스크립트를 실행함을 나타냅니다.72e4edd2d085fdcb47b53f5e502e5ff75db79b134e9f6b82c0b36e0489ee08ed或者 545e03930b8a5bfef9f2a7d842d13b325db79b134e9f6b82c0b36e0489ee08edvoid(0) 只是用来计算一个空值,其实也是什么事情都不做,而分号“;”则表示是一个空的js语句,这样就不会有任何其他跳转发生了,而且W3C标准不推荐在href里面执行javascript语句,所以还是用 onclick事件触发吧
如果不设置 href属性在IE6下面会不响应hover。双击后会选中标签的父容器而非这个一a标签(IE下都存在这一问题)。
<a href="javascirpt:fn(this)"> <a onclick="fn(this)">
所以,比较推荐的写法是假定我们有个fn方法,需要取到这个元素,第一个方法传入的this是空值。
<a href="javascript:void(0)" onclick="fn(this)">
下面代码则执行了subgo()函数,
<a href="javascript:void(0)" onclick="subgo()">点我</a>
在这里,javascript:void(0),没启实质上的作用,它仅仅是一个死链接,执行的函数是subgo()。
点我与<a href="javascript:void(0)" onclick="subgo()">点我</a>区别。
实际上 #包含了一个位置信息默认的锚是#top 也就是网页的上端 ,而javascript:void(0) 仅仅表示一个死链接,没有任何信息。所以调用脚本的时候最好用void(0)
href一般是指向一个URL地址,也可以调用javascript ,如href="javascript:xxx();",文档中推荐这样写:a8fcd39b1b46247ccd0f10983ba5bd30 会导致页面定位到书签位置,