回答
不,在JavaScript中不支持。這種解決方法似乎很成問題,因爲你現在失去了正斜槓的能力。
當我需要從ASP.NET後端創建警報消息或其他東西時,我自己遇到了這個問題,並將其粘貼在前端的JavaScript警報中。問題是開發人員可以在Page.Alert()方法中輸入任何內容。
我做了什麼來解決這個如下:
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.
}
我再次重申什麼了之前說的 - 逐字的字符串是不可能的JavaScript。它實際上很容易逃脫像\n \\ \t
等有效的轉義字符,但問題來自逃避無效字符,因爲他們在不同的功能處理方式,他們變得不兼容。例如
"\a".replace("\a","\\a") // WORKS \a
"aa\a".replace("\a", "\\a") // FAILS \aaa
此外,如果你看的非法特殊字符數組,例如["\a"]
該角色會只是看起來像一個a
。這使得做你想要的東西基本上不可能。
希望至少爲你清除它。
一個解決辦法的大雜牌...
<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>
這有很多副作用,你最好希望在你的字符串中沒有&。 – 2011-06-30 20:22:59
@Juan Mendes:「大kludge」的哪部分你不瞭解? – 2011-06-30 21:17:36
維基百科,自由的百科全書跳轉至:導航,搜索維基百科,自由的百科全書跳轉至:導航,搜索維基百科,自由的百科全書跳轉至:導航,搜索維基百科,自由的百科全書跳轉至:甚至有資格作爲雜食。 – 2011-06-30 22:06:31
模板串做支撐換行符。
`so you can
do this if you want`
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
這當然並不阻止擴展在文本中出現的,並推而廣之,代碼執行,但也許這是好事嗎?
注:我不認爲有一種方式來利用現有的字符串,並通過表達插補運行它。這使得不可能以這種方式注入代碼,因爲代碼必須源自源代碼。我不知道可以按需進行表達式插值的API。
注2:模板字符串是ES2015/ES6功能。除了(等待它......)IE之外,在每個瀏覽器中都支持!但是,Edge支持模板字符串。
注3:模板字符串展開轉義序列,如果在字符串內部有一個字符串,該字符串將展開其轉義序列。
`"A\nB"`
...將導致:
"A B"
...這不會與
JSON.parse
一起工作,因爲現在在字符串文字中有一個換行符。可能很高興知道。
這是一個非常古老的線程,但還是這裏有一個解決方法:
function verbatim(fn){return fn.toString().match(/[^]*\/\*\s*([^]*)\s*\*\/\}$/)[1]}
,你會這樣使用:
var myText = verbatim(function(){/*This
is a multiline \a\n\0 verbatim line*/})
基本上就是在這裏發生的是,js的治療意見的確作爲逐字串。此外,這些都是隨功能一起存儲的。因此,這裏發生的是我們創建了一個函數,其中包含一些我們在逐字函數中提取的逐字評論。
只需使用String.raw()
String.raw`\n`
將輸出
\\n
但我不知道如何解決的情況下:
String.raw`hello`hello` // It will throw an TypeError
String.raw`hello\`hello` // Output is 'hello\\`hello'
我不知道如何處理`
:(
- 1. Ruby是否支持逐字字符串?
- 2. Hash.slice是否支持字符串?
- 3. Process.StartInfo.Arguments是否支持UTF-8字符串?
- 4. SolrJ是否支持字符串數組?
- 5. 是否有一些字符串比較不是逐字符?
- 6. 添加字符串逐字字符串
- 7. com.google.firebase.database.DatabaseException:不支持字符,請字符串
- 8. 更改功能支持IO字符串,而不是字符串
- 9. json是否支持阿拉伯字符?
- 10. FTP是否支持UTF字符集?
- 11. 的JavaScript字符串不支持特殊字符
- 12. 字符串逐字問題
- 13. Volley是否有JSON參數,字符串響應本機支持
- 14. PCRE是否正確支持unicode字符串?
- 15. CoffeeScript是否支持單引號字符串中的插值?
- 16. JSON.parse是否支持解析字符串而不用雙引號
- 17. Poco數據是否支持多個查詢字符串?
- 18. JSON字符串中是否支持雙引號?
- 19. C++是否支持字符串類型的常量數組?
- 20. Sybase是否支持不正確的字符串類型?
- 21. ofstream variable.open是否支持預定義的字符串變量?
- 22. PureScript是否支持像C/Java等「格式化字符串」?
- 23. 增強測試是否支持寬字符串?
- 24. SAML2 SSO - EntityId中是否支持查詢字符串參數URI
- 25. []運算符不支持字符串
- 26. AVX或AVX2是否支持256位字符串指令,mullo是否爲unsigned short?
- 27. JavaScript是否支持<=運算符?
- 28. .NET StringBuilder和逐字字符串文字
- 29. Rebol 3 R3-GUI字段是否支持非ASCII字符串輸入?
- 30. 將字符串添加到逐字字符串文字
這只是一個例子,非常適合給定的問題(Windows路徑)。你可以替換/任何角色。 – PhiLho 2008-11-12 16:54:35