onclick 값에서 'javascript'대신 다른 단어를 사용할 때 브라우저에서 오류가 발생하지 않는 이유는 무엇입니까?


100

나는 웹 사이트를 물려 받았는데,이 호기심을 발견했습니다.

<a href="/delete"  onClick="jamoscript:return confirm('Do you really want to do that?');">Delete all</a>

해당 페이지를 표시하고 링크를 클릭하면 " jamoscript"을 " javascript"로 변경할 때와 똑같은 확인 대화 상자가 나타납니다 . 페이지가로드되거나 링크를 클릭 할 때 Firebug 콘솔에 진단이 표시되지 않습니다. 뭐야? 자모 스크립트를 검색해도 흥미로운 것은 없습니다.

아무도이 행동을 설명 할 수 있습니까?

답변:


144

"onclick"속성의 문자열 값은 간단한 JavaScript 코드로 간주됩니다. 자바 스크립트에는 레이블이 지정된 명령문에 대한 조항이 포함되어 있으므로 코드는 return레이블이 "jamoscript"인 명령문입니다. 즉, 다음과 같습니다.

jamoscript: return confirm("Do you really want to hurt me?");

완벽하게 합법적 인 JavaScript입니다. 레이블은 많이 사용되지 않으므로 익숙하지 않습니다.

"javascript :"접두사가 중요한 유일한 컨텍스트는 <a>태그 의 "href"속성과 마찬가지로 URL이 예상되는 경우입니다 .


53
이 질문은 언어가 "JamoScript"라고 불 렸으면 좋겠습니다.
Pointy

5
이것은 다음이하는 일에 대한 유명한 문제를 상기시킵니다 function foo(a) { x: 2 }.

80
이 코드 줄 (?-나는 프로그래머가 아님)이 의심 할 여지없이 그리스인이 작성했거나 적어도 "jamoscirpt"가 그리스인이 제안했음을 알리기 위해 여기에 계정을 만들었습니다. "Jamo"는 그리스어로 "f --- ing"이라는 단어가 가진 소리를 만들기 위해 영어 문자의 소리를 사용하는 방법입니다. 따라서 "jamoscript"를 소리내어 읽으려고하면 "script"라는 단어를 아는 그리스 사람은 "f--ing script"를 이해할 것입니다. "j"대신 문자 "g"를 사용하면 의도 한 효과가 더 확실 할 수 있지만 "j-ava"와 함께 의도 된 연극이 있었던 것 같습니다.
Alecos Papadopoulos 2014

6
@AlecosPapadopoulos 와우 굉장합니다. 아무것도, 나조차 할 수 있다면 더 많은 언어가 실제로 "JamoScript": 불렸다
뾰족한

6
@asawyer 나는 정보 (+1)을 주셔서 감사합니다,하지만 내 온유을 흘리는 나를 유혹하지 마십시오 온라인 인물과 내 진짜 ...으로 되돌아 다시
Alecos 파파도풀로스
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.