javascript eval反斜杠在窗口NT路径问题

时间:2010-06-15 11:58:52

标签: javascript eval

我正在经历一个经典的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>

我尝试了双反斜杠,没有工作,如果有人能帮我解决这个问题,尽可能减少麻烦,我会感激不尽。

2 个答案:

答案 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';