많은 분들이 이렇게 Javascript를 사용해 오셨습니다.
< a href= "#" onclick="al()">Save
위 코드는 사용하기 매우 편리하며 모든 브라우저에서 지원됩니다
HTML, CSS, JS를 분리하면 유지관리가 더 쉽다는 내용의 책을 아주 일찍 읽은 적이 있는데, 편의성에 욕심이 나서 디버깅을 하다 보면 이런 글을 자주 쓰게 됩니다. 오늘 저는 인라인으로 작성하지 않는 것이 더 낫다는 것을 알았습니다. 왜냐하면 Firefox의 방화범을 사용하면 코드가 쉽게 무효화될 수 있기 때문입니다.
이유를 살펴보겠습니다.
<script> <BR>function al() <BR>{ <BR>alert("good") <BR></script>
저장 ;/body>
위 코드는 레이블을 클릭하여 대화 상자를 팝업하는 것입니다.
효과는 다음과 같습니다.
하지만 Firefox에서 a 태그를 찾아 안에 있는 js 코드를 제거하면 a 태그를 클릭해도 아래와 같이 대화 상자가 나타나지 않습니다
따라서 귀하의 클릭 이벤트가 다음과 같은 경우 사용자가 입력한 데이터가 합법적인지 판단하는 것은 불가능합니다.
저는 asp.net에서 일하고 있는데 오늘 이 문제를 발견했습니다. net 서버 컨트롤에는 프런트 데스크와 프런트 데스크에 각각 하나씩 두 개의 클릭 이벤트가 있습니다. 백그라운드에서는 포그라운드의 클릭 이벤트를 사용하여 사용자의 입력 데이터가 합법적인지 판단했습니다. 결과적으로 Firefox를 사용하여 위에서 설명한 현상을 발견했습니다. 데이터가 불법이더라도 백그라운드 메서드를 직접 호출하는 것은 아닙니다. 어떤 기술인지는 모르지만 이것을 발견하게 되어 기쁩니다. 문제는 기사를 올려서 공유해주세요 ㅎㅎ
해결책:
아래와 같이 태그에 ID를 부여하세요
저장 <script> <div class="codebody" id="code18683">document.getElementById("a1").onclick=function(){} <br></script>