내 사용자 스크립트의 onclick 속성이 \'잡히지 않은 참조 오류: 함수가 정의되지 않았습니다\'를 발생시키는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-19 06:58:02
원래의
273명이 탐색했습니다.

Why Does My Userscript's onclick Attribute Cause an

해결되지 않은 참조 오류: 함수가 onclick으로 정의되지 않았습니다

문제

사용자 스크립트에서 onclick 속성을 통해 함수를 호출하려고 하면 잡히지 않은 ReferenceError: 함수가 아닙니다. 정의되었습니다.

조사

함수가 스크립트에 정의되어 있는 기존의 onclick 속성 동작은 샌드박싱 메커니즘으로 인해 사용자 스크립트에서 작동하지 않습니다.

해결책

이 문제를 해결하려면 항상 onclick 대신 addEventListener()를 사용하세요. attribute.

코드 리팩터링

onclick 속성을 다음으로 교체:

document.getElementById("ElementID").addEventListener("click", functionName, false);
로그인 후 복사

추가 문제

DOM 덮어쓰기 및 이벤트 처리기

DOM을 덮어쓰기 위해 innerHTML이나 externalHTML을 사용하지 마세요. 기존 이벤트 핸들러를 제거하므로 요소를 여러 번 제거합니다.

고유 ID

각 요소에 고유 ID가 있는지 확인하세요. ID를 재사용하면 유효성 검사 문제가 발생합니다.

이 코드에서 onclick 속성은 addEventListener()로 대체되었으며 DOM 덮어쓰기 문제는 해결되었습니다.

for (i = 0; i < EmoteURLLines.length; i++) {
    if (checkIMG (EmoteURLLines[i])) {
        emoteTab[2].innerHTML += '<span>
로그인 후 복사

위 내용은 내 사용자 스크립트의 onclick 속성이 \'잡히지 않은 참조 오류: 함수가 정의되지 않았습니다\'를 발생시키는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿