리디렉션 없이 클릭 한 번으로 간단한 자바스크립트 함수를 실행하고 싶습니다.
자바스크립트 호출을 href
어트리뷰트에 넣는 것과 이렇게 하는 것 사이에 차이점이나 이점이 있나요?
<a href="javascript:my_function();window.print();">....</a>
)에 넣는 것과 온클릭
어트리뷰트(온클릭
이벤트에 바인딩)에 넣는 것의 차이는 무엇인가요?
<a id="myLink" href="javascript:MyFunction();">link text</a>
<a id="myLink" href="#" onclick="MyFunction();">link text</a>
<a id="myLink" href="#" onclick="MyFunction();return false;">link text</a>
<a id="myLink" title="Click to do something"
href="#" onclick="MyFunction();return false;">link text</a>
<a id="myLink" title="Click to do something"
href="PleaseEnableJavascript.html" onclick="MyFunction();return false;">link text</a>
더 좋은 이유? '리턴' 은 다음과 같은 것을 때문에 거짓값 브라우저에서 링크
Jquery 사용 또는 기타 유사한 프레임워크입니다 element& # 39 의 ID 가 처리기에서 부착합니다 온 클릭.
$('#myLink').click(function(){ MyFunction(); return false; });
href 내에 온클릭을 넣으면 콘텐츠와 동작/행동을 분리해야 한다고 믿는 사람들의 불쾌감을 살 수 있습니다. HTML 콘텐츠는 프레젠테이션이나 행동이 아닌 콘텐츠에만 집중해야 한다는 주장입니다.
요즘에는 자바스크립트 라이브러리(예: jquery)를 사용하고 해당 라이브러리를 사용하여 이벤트 핸들러를 만드는 것이 일반적인 경로입니다. 다음과 같이 보일 것입니다:
$('a').click( function(e) {e.preventDefault(); /*your_code_here;*/ return false; } );
하나의 차이가 있는 것은 '이' 키워드여야 javascript 측면에서, 온 클릭 '이' 그 '는 것은' 속성용 온 클릭 처리기에서 DOM element (이 경우는 ',' a> <, 요소) 이 있는 반면, '' 는 '윈도' 는 '' href 속성을 객체에는.
Href 속성을 presentation 측면에서 '' 링크를 통해 없을 경우 (즉, '< 매핑되며, 온 클릭 = ", [.] " >;') 그 후, 브라우저 'text' 는 기본적으로 표시하십시오 커서 (cursor 필요한 경우가 많습니다. 포인터입니다 '이 아니라'), ',' < 다룰 만큼 a> 표시됨과 앵커 및 링크가 아닙니다.
Behavior 측면에서 '는 일반적으로 브라우저를 통해 선정할 때는 조치가 탐색, href', '열기' 를 사용하여 지원할 수 있는 별도의 창에 href 짧은보기 또는 컨텍스트 메뉴. 이 때 온 클릭 '액션' specifying 통해서만 가능한 것은 아니다.
_
그러나, re 것을 얻는 가장 좋은 방법은 지정하십시오. you& # 39 에서 DOM javascript 를 사용하여 동적 객체 연결 작업을 클릭 후 이벤트 컨텐트에서 가장 좋은 방법은 별도로 문서가 검색하기를. 이 할 수 있는 다양한 방법으로. 일반적인 방법은 자바스크립트 라이브러리 사용 등 이벤트를 바인딩하도록 포함한다.
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<a id="link" href="http://example.com/action">link text</a>
<script type="text/javascript">
$('a#link').click(function(){ /* ... action ... */ })
</script>
내가 사용하는
Click <a nohref style="cursor:pointer;color:blue;text-decoration:underline"
onClick="alert('Hello World')">HERE</a>
하지만 갈 길이 멀다 수립하였습니다 업무 완료. 사용하는 단순화하도록 스타일 그런 것이 됩니다.
<style> A {cursor:pointer;color:blue;text-decoration:underline; } </style>
<a nohref onClick="alert('Hello World')">HERE</a>
이렇게 할 수 있는 최선의 방법을 사용하는 것입니다.
<a href="#" onclick="someFunction(e)"></a>
문제는 이 추가하기에서는 해시보다 (#) 는 끝까지 브라우저에서 사용자가 필요로 하는 카타시안 page& # 39 의 URL 을 버튼을 두 번 다시 갈 전에 페이지를 네거잖아 이 때 일부 코드를 추가해야 합니다 중지되기를 이벤트 전파. 이를 위해 이미 대부분의 기능을 javascript 툴킷 했다. 예를 들어, dojo toolkit /dev/raw/raw1
dojo.stopEvent(event);
사용자정의하려면.
답이 1 위 매우 안좋은 연습, 빈 해시라고 문제가 발생할 수 있으므로 절대 안 판매업체에서 https://partner. microsoft. down the road.
최고 기록은 매우 많은 사람들이 이벤트 핸들러를 바인딩하도록 수 있다고 하지만 요소로 ' ();;;;; a href = " < javascript 도스토프 " > 못하며창조된 stuff< /a>.' 는 모든 분야에서 광범위하게 사용하며, 현대, 쉐퍼드도 완벽하게 있지만브라우저에 렌더링이 템플릿을 바인딩 인스턴스별로 않아도 됩니다. 경우에 따라 이 외곽진입 제공사항 성능이 향상됩니다. 이메프
또 다른 흥미로운 맛있는 가벼운 음식.
'온 클릭' &. javascript 를 직접 호출할 때 href '' 비헤이비어를 다르다.
반면, '이' 제대로 '은' 온 클릭 패스 '컨텍스트로 won& href' # 39, t, 다시 말해, a href = " < javascript 도스토프 (이) ',' t work,, 어떠한 context< " > /a> won& # 39, 반면, ' (이) = " javascript 도스토프 < 매핑되며, 온 클릭,,' 윌이야 /a> " > context< 없습니다.
예, 제가 제외한 'href'. # 39 를 사용할 수 있는 동안, t 준수하십시오 doesn& 사양명세 얻게된다면 모든 브라우저에서 포함되어야 합니다. (특히 it 있지만, javascript: void (0) ',' href = " 좋은 주옵니다 ".
',' 믿지아니하며 속성을 가진 javascript isn& # 39 는 html 오래된 방법을 스크립팅하는 특별히 없다. # 39, re still 지정, 기술적으로 작동하잖아 you& javascript 속성을 비사양 스크립트입니다 속성용 isn& 있는 t # 39, 좋습니다. 시 오래된 브라우저, 심지어 일부 현대 수준들과 실패할 수도 있습니다 (a 봤 포럼 게시물로의 제마드 # 39, & # 39 javascript:& 사랑하지 않는다는 오페라. url).
두 번째 방법은 더 좋은 것이 될 수 없는 경우, 이는 '속성' 온 클릭 javascript 를 넣어 무시됨 스크립팅 기능을 사용할 수 있습니다. 배치하십시오 유효함 uirl href 필드 (& # 39, & # 39, # 일반적으로) 에서 대체 대한 없는 자들을 위한 자바스크립트.
한 번 더 심아이엔큐 건 물론, href" " 사용할 때, javascript 와.
의 스크립트를 " href"; # 39, 클릭하면 실행할 수 없는 경우 2 시간 차이를 won& 속성용 것은 매우 짧다.
예를 들어, 예를 들어, 더블 클릭 하면 실행하십시오 (fast!) 각 링크에. 첫 번째 링크가 실행됨을 한 번만. 두 번째 https://partner. 실행됨을 주택복권에 당첨되셨다고요?
<script>
function myFunc() {
var s = 0;
for (var i=0; i<100000; i++) {
s+=i;
}
console.log(s);
}
</script>
<a href="javascript:myFunc()">href</a>
<a href="#" onclick="javascript:myFunc()">onclick</a>
크롬 (더블 클릭) 및 IE11 의 복제되었는지 (함께 트리플 클릭). 크롬 10 개만 있는 만큼 빨리 클릭하면 클릭 횟수가 1 함수 실행 할 수 있습니다.
Firefox 제대로 작동.
이 때문에 url 에 가장 먼저 'href' 에서 열 수 있도록 복제본에 링크, 다른 탭으로 상술합니다.
경우에 따라 (예를 들어 있는 사이트를 자주 HTML 변경) 할 때 모든 것은 실용적이지 앟습니다 바인딩하도록 링크 업데이트하려면.
보통 링크:
<a href="https://www.google.com/">Google<a/>
그리고 이 같은 일이 위한 JS:
$("a").click(function (e) {
e.preventDefault();
var href = $(this).attr("href");
window.open(href);
return false;
});
이 방법의 장점은 청소하십시오 수정표시 및 비헤이비어와 doesn& # 39 의 분판 있다 없다, 모든 함수 호출을 반복하려면 [링크.
<a href="https://www.google.com/" onclick="return Handler(this, event);">Google</a>
그리고 이 위한 JS:
function Handler(self, e) {
e.preventDefault();
var href = $(self).attr("href");
window.open(href);
return false;
}
이 효과를 볼 수 있는 새로운 링크 (예를 들어, AJAX 를 통해) 이 방법은 로드하십시오 원할 때마다 매번 바인딩하면 걱정할 필요가 없다.
<hr>
<h3 class="form-signin-heading"><i class="icon-edit"></i> Register</h3>
<button data-placement="top" id="signin_student" onclick="window.location='signup_student.php'" id="btn_student" name="login" class="btn btn-info" type="submit">Student</button>
<div class="pull-right">
<button data-placement="top" id="signin_teacher" onclick="window.location='guru/signup_teacher.php'" name="login" class="btn btn-info" type="submit">Teacher</button>
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('#signin_student').tooltip('show'); $('#signin_student').tooltip('hide');
});
</script>
<script type="text/javascript">
$(document).ready(function(){
$('#signin_teacher').tooltip('show'); $('#signin_teacher').tooltip('hide');
});
</script>