2010-06-15 26 views
0

我正在经历一个经典的JS案例(在我看来),但经过大量的谷歌搜索,仍然无法找到解决方案。反斜杠被认为是JS中的转义字符,但是当你需要从JS传递windows路径并打印它时,你会做什么?javascript eval反斜线在窗口NT路径问题

我正在使用eval,因为我的java小应用程序正在执行代码,并在它有一个字符串进行评估时放置位。这就是为什么EVAL是必要的,但是我已经做出了表率,低于:

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

我试过双反斜线,不工作,如果有人可以帮助我解决这个问题用的少些麻烦越好,我将不胜感激。

+1

你好@哈里德塔里克!作为一个Stackoverflow建议,你应该考虑回顾你所问的问题。对于那些已经帮助过你的答案的人,点击左边的复选标记“接受”最好的答案。 – Pointy 2010-06-15 12:14:42

+0

感谢您的帮助,我现在知道如何正确使用它。为什么我使用eval,本文将帮助您理解:http://java.sun.com/javase/6/docs/technotes/guides/scripting/programmer_guide/index.html – 2010-06-15 12:23:40

回答

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

你需要翻两倍反斜杠,因为首先解释字符串字面值由JS解析器解析,然后由于eval调用而再次解析结果。

或者,最好尽量避免使用eval。几乎没有必要,它增加了复杂性并减缓了执行速度。

此示例将作为刚工作: 的document.getElementById( 'mainTabs')的innerHTML = '\\Ç\干谒\ FILE.DOC';。