views:

563

answers:

3

In C# you can use verbatim strings like this:

@"\\server\share\file.txt"

Is there something similar in JavaScript?

+2  A: 

No, there isn't support for that in JavaScript. And that workaround seems very problematic as you now lose the ability to have forward slashes.

I've run into this issue myself when I needed to build an alert message or something from an ASP.NET back end, and stick it in a JavaScript alert on the front end. The issue was that developers could enter anything in the Page.Alert() method.

What I did to solve this was as follows:

public void Alert(string message)
{
    message = message.Replace("\\", "\\\\")
        .Replace("\r\n", "\n")
        .Replace("\n", "\\n")
        .Replace("\t", "\\t")
        .Replace("\"", "\\\"");

    // and now register my JavaScript with this safe string.
}
Timothy Khouri
It was only an example, well suited to the given question (Windows path). You can replace / by any character.
PhiLho
+1  A: 

I'll re-iterate what's been said before - verbatim strings aren't possible in javascript. It's actually easy to escape valid escape characters like \n \\ \t etc but the problem comes from escaping non-valid characters due to the way they are handled in the different functions they become incompatible. For example

"\a".replace("\a","\\a")     // WORKS \a
"aa\a".replace("\a", "\\a")  // FAILS \aaa

Also if you look at an array of illegal special characters eg ["\a"] the character will jsut look like an a. This makes doing what you want essentially impossible.

Hope that at least clears it up for you.

kouPhax
A: 

Big kludge of a workaround...

<html>
<head>
<script>
function foo() {
    var string = document.getElementById('foo').innerHTML;
    alert(string);
}
window.onload=foo;
</script>
<style>
#foo{
  display: none;
}
</style>
</head>
<body>
Calling foo on page load.
<div id="foo">\\server\path\to\file.txt</div>
</body>
</html>
Mr. Muskrat