2009-06-17 101 views
4

我有一個JavaScript書籤,當點擊,將用戶重定向到一個新的網頁,並提供舊網頁的URL作爲查詢字符串參數。在Javascript中轉義雙連字符?

我遇到一個問題,當原來的網頁具有URL中的雙連字符(例如:page--1--of--3.html)。愚蠢的,我知道 - 我無法控制的原始頁面,我使用的是不逃避連字符的JavaScript escape功能,如果受邀擔任resource.aspx?original=page--1--of--3.html

IIS 6給出了一個文件未找到錯誤是否有其他的JavaScript我可以使用escape函數嗎?解決這個問題的最好方法是什麼?有誰知道爲什麼IIS扼流圈resource.aspx?original=page--1而不是page-1

+0

你檢查服務器日誌,看看它是* * recieving的要求? – Breton 2009-06-17 05:42:45

回答

2

可以展開一些自定義邏輯逃生功能的連字符的編碼手動?

resource.aspx?original=page%2d%2d1%2d%2dof%2d%2d3.html 

事情是這樣的:

function customEscape(url) { 
    url = escape(url); 
    url = url.replace(/-/g, '%2d'); 
    return url; 
} 

location.href = customEscape("resource.axd?original=test--page.html"); 

更新,爲一個書籤:

<a href="javascript:location.href=escape('resource.axd?original=test--page.html').replace(/-/g, '%2d')">Link</a> 
+0

是否可以在小書籤內做到這一點? – ine 2009-06-17 04:31:28

+0

我用書籤添加了更新 – bendewey 2009-06-17 04:44:46

+2

我接受這個方法,但坦率地說它沒有任何意義。這意味着IIS6會對URL中的內容進行一些處理(不奇怪,但我從未聽說過)。 – SpliFF 2009-06-17 05:07:13

1

你做別的事情是錯誤的。 - 在網址和文件名中是合法的。也許文件確實沒有找到?

1

- 用於在幾個腳本語言註釋文本。 SQL Server使用它來添加註釋。你使用任何數據庫邏輯來存儲這些文件名嗎?或者在這個名字是查詢字符串的一部分而不是使用查詢參數的情況下創建任何查詢?

4

「越獄」和「UNESCAPE」精確反對,因爲它不編碼所有相關的字符。 請勿使用ESCAPE或UNESCAPE。改爲使用「encodeURIComponent」和「decodeURIComponent」。除了最古老的破舊瀏覽器之外,它們都受到支持。這真是一個巨大的恥辱,這種知識並不常見。

(另見是encodeURI和decodeURI)

編輯:犯錯剛剛測試過,但是這並沒有真正覆蓋雙連動。抱歉。