2010-06-15 4 views
0

제 생각에는 고전적인 JS 사례가 있습니다. 그러나 많은 검색 결과를 찾은 후에도 여전히 해결책을 찾을 수 없습니다. 백 슬래시는 JS에서 이스케이프 문자로 간주되지만 JS에서 창 경로를 전달하여 인쇄해야하는 경우 어떻게해야할까요?윈도우 NT 경로 문제에 자바 스크립트 eval 백 슬래시

자바 애플릿이 코드를 실행하고 평가할 문자열이있을 때 비트를 배치하기 때문에 eval을 사용하고 있습니다.

<div id="mainTabs"></div> 
<script> 
var s = "document.getElementById('mainTabs').innerHTML='\\C\ganye\file.doc'"; 
eval(s); 
</script> 

나는 누군가가 나에게 가능한 한 덜 번거 로움으로 함께이 문제를 해결하는 데 도움 수 있다면, 작동하지 않는 이중 백 슬래시, 나는 감사 느낄 것이다 시도 : 평가가 필요한 이유 그러나 내가 아래에있는 예제를 만들었습니다,입니다 . 당신이 평가 후면을 사용하기 때문에

+1

안녕하세요 @Hammad Tariq! Stackoverflow 조언의 일부로, 당신이 물어 본 질문을 다시 고려해야합니다. 도움이 된 응답이있는 사람들은 왼쪽에있는 체크 표시를 클릭하여 가장 좋은 대답을 수락하십시오. – Pointy

+0

나를 도와 주셔서 감사합니다, 나는 지금 그것을 올바르게하는 방법을 알고 있습니다. 왜 eval을 사용하고 있습니까?이 기사는 다음을 이해하는 데 도움이됩니다. http://java.sun.com/javase/6/docs/technotes/guides/scripting/programmer_guide/index.html –

답변

2

는 자바 스크립트 인터프리터는 두 번 호출지고 있습니다 - 그래서 당신은 배를 두 번하지 백 슬래시, 필요

document.getElementById('mainTabs').innerHTML='\\\\C\\ganye\\file.doc' 

:로 설정하기 s에서이 결과

var s = "document.getElementById('mainTabs').innerHTML='\\\\\\\\C\\\\ganye\\\\file.doc'"; 

을 따라서 innerHTML은 다음과 같이 설정됩니다.

\\C\ganye\file.doc 

원하는대로 설정할 수 있습니다. (내가 eval()을 필요로하는 이유를 잘 모르겠다. 그러나 다음과 같이하면 문제를 해결하는 방법이다.

1

문자열 리터럴이 처음 해석되기 때문에 백 슬래시를 4 배로해야한다. JS 파서에 의해 평가되고, 결과는 평가 호출로 인해 다시 파싱됩니다.

또는 eval을 사용하지 않는 것이 좋습니다. 거의 필요하지 않으며 복잡성이 증가하고 실행 속도가 느려집니다.

이 예제는 단지 document.getElementById ('mainTabs'). innerHTML = '\\ C \ ganye \ file.doc';

관련 문제