웹 응용 프로그램에 새로운 기능을 추가 할 때 Button 객체의 값을 동적으로 설정해야합니다. 값에 html로 인코딩 된 유니 코드 문자를 넣어야합니다. 이것을 구현할 때, 문자를 정의하는 위치에 따라 문자가 올바르게 표시되는지 여부가 결정됩니다. onclick 이벤트 자체에서 문자를 정의하면 문자가 제대로 표시됩니다. 함수 나 최상위 레벨에서 정의하면 리터럴 텍스트로 표시됩니다. , IE8 내 테스트에서내 문자열 선언의 위치가 내 HTML 인코딩 엔티티가 제대로 표시되는지 여부에 영향을주는 이유는 무엇입니까?
<html><body>
<script type="text/javascript">
var tlabel3 = '> foo <';
function ChangeName2() {
document.getElementById('button2').value = '> foo <';
}
function ChangeName3() {
document.getElementById('button3').value = tlabel3;
}
function ChangeName4(label4) {
document.getElementById('button4').value = label4;
}
</script>
<input type=button id=button1 value="< foo >"> - <a href=# onclick="document.getElementById('button1').value = '> foo <'">Clicky</a>
<HR>
<input type=button id=button2 value="< foo >"> - <a href=# onclick="ChangeName2()">Clicky</a>
<HR>
<input type=button id=button3 value="< foo >"> - <a href=# onclick="ChangeName3()">Clicky</a>
<HR>
<input type=button id=button4 value="< foo >"> - <a href=# onclick="ChangeName4('> foo <')">Clicky</a>
</body></html>
:
난 다음 샘플 HTML로 내 문제를 증류 한/JS는 (내 궁극적 문제 유니 자하지만 예로 중위/GT를 사용하고 있음에 유의) Safari, Chrome 및 FF3.6에서는이 동작이 동일합니다. onclick 핸들러에 정의 된 문자가있는 버튼 1과 4가 제대로 작동합니다. 다른 곳에서 정의 된 문자를 갖는 버튼 2와 3은 리터럴 >
문자열을 표시합니다.
제 질문은 왜 문자열 정의의 위치가 중요합니까? 나는 주위에 일을하지만 네 브라우저가 모두 같은 방식으로 작동하기 때문에 Javascript의 기본 작업에 대한 지식이 부족한 것처럼 느껴진다.
감사
쓰레기. 나는 그것이 명백 할 것임을 알았다. 실제로 당신이 방화범에서 언급 한 렌더링/렌더링되지 않은 것을 보았습니다. 나는 그 의미를 취하지 않았습니다. – jj33
보너스 포인트를 얻으려면 javascript에서 호출하여 << '을 jj33
안녕하세요 @ jj33, 그게 네이티브 기능이 있는지 모르겠다. 그러나 여기에 이것을 수행하는 일종의 유명한 라이브러리가 있습니다 : http://www.strictly-software.com/htmlencode 거기에 html_decode() 함수가 있습니다. 단지 여러분이 필요로하는 것입니다. –