저는 독자적으로 자바 스크립트 갤러리 스크립트를 만들려고했습니다. 나는 IE6에서 작동하지 않는다는 것을 알아 채기 전까지는 꽤 행복했습니다. FireFox에서 모든 것이 잘 보입니다. 그래서 디버깅을 시작했습니다.JavaScript 함수 콜백 및 이벤트
나는 setAttribute가 확실한 문제 중 하나임을 확인했습니다. 어쩌면 가장 큰 것일 수도 있습니다. 매개 변수를 사용하여 onclick 속성을 설정하는 것에 대한 interetsing article을보고 나면 행복하게 느껴졌지만 한 가지는 나에게 미해결로 남았습니다. 콜백 메소드를 사용하는 것은 까다 롭지 만, 그런 식으로 이벤트 객체를 전달하는 방법을 모른다.
var miniatury = document.getElementsByTagName ("a");
function zoom(){
for (l = 0; l < miniatury.length; l++) {
if (miniatury[l].className.match("zoom") != null ) {
var href = miniatury[l].href;
if (document.images) {
preImg[l] = new Image();
preImg[l].src = href;
miniatury[l].setAttribute("onclick", "przybliz(preImg["+[l]+"].src, event); event.returnValue=false; return false;");
}
else {
miniatury[l].setAttribute("onclick", "przybliz(href, event); event.returnValue=false; return false;");}
}
}
}
function przybliz(adres, event) {
pojemnik.style.display = 'block';
if (navigator.appName == "Microsoft Internet Explorer") {
pozycjaX= window.event.clientX + document.documentElement.scrollLeft
+ document.body.scrollLeft;
pozycjaY= window.event.clientY + document.documentElement.scrollTop
+ document.body.scrollTop;
}
if (navigator.appName != "Microsoft Internet Explorer") {
pozycjaX = event.clientX + window.scrollX;
pozycjaY = event.clientY + window.scrollY;
}
pojemnik.style.top = pozycjaY+'px';
pojemnik.style.left = pozycjaX+'px';
질문은 다음과 같습니다 : 다음은 이전 코드 샘플입니다 어떻게
의 onclick = 콜백에 코드를 변경 (F, 인수) 이벤트 객체의 값을 전달과
는, 나중에 사치스럽게 사용 하시겠습니까?
이것은 스스로하기가 매우 까다로운 영역 중 하나입니다 (예 : 멀티 스레드 대기열 작성). 앱을 bugtesting하는 것보다 jQuery를 bugtesting하는 사람들이 훨씬 많기 때문에 라이브러리의 함수를 사용하여 올바르게 가져 오십시오. –
Anthony에게 감사드립니다. 귀하의 대답은 도움이되었습니다. 지금은 작동하지 않는다는 것을 의미하지만 기본 자바 스크립트에는 내 문제에 대해 명확하고 간단한 해결책이 없기 때문에 지금 jQuery 또는 기타 라이브러리에 대해 더 자세히 알게 될 것입니다. 잠시 후 나는 다른 견해로이 문제로 돌아갈 것이다. – Luigi