我正在经历一个经典的JS案例(在我看来),但经过大量的谷歌搜索,仍然无法找到解决方案。反斜杠被认为是JS中的转义字符,但是当你需要从JS传递windows路径并打印它时你会怎么做?
我正在使用eval,因为我的java applet正在执行代码并在有一个要评估的字符串时放置位。这就是为什么eval是必要的,但是我已经做了一个例子如下:
<div id="mainTabs"></div>
<script>
var s = "document.getElementById('mainTabs').innerHTML='\\C\ganye\file.doc'";
eval(s);
</script>
我尝试了双反斜杠,没有工作,如果有人能帮我解决这个问题,尽可能减少麻烦,我会感激不尽。
答案 0 :(得分:2)
因为你正在使用eval,所以Javascript解释器被调用两次 - 所以你需要四倍的反斜杠,而不是双倍:
var s = "document.getElementById('mainTabs').innerHTML='\\\\\\\\C\\\\ganye\\\\file.doc'";
这导致s
设置为:
document.getElementById('mainTabs').innerHTML='\\\\C\\ganye\\file.doc'
所以innerHTML设置为:
\\C\ganye\file.doc
这就是你想要的。 (我不确定我理解你需要eval()的理由,但如果你这样做,这就是解决问题的方法: - )
答案 1 :(得分:1)
你需要将反斜杠翻两番,因为字符串文字首先由JS解析器解释,然后由于eval调用再次解析结果。
或者,最好尽量避免使用eval。它几乎从来没有必要,它增加了复杂性并减慢了执行速度。
这个例子可以正常工作: 的document.getElementById( 'mainTabs')的innerHTML = '\\Ç\干谒\ FILE.DOC';