2011-11-18 48 views
0

由於在鏈接的href屬性下使用window.open函數中的URL編碼,因此我面臨一個問題。與href屬性中的window.open問題

基本上我試圖打開我的網站一般使用彈出功能。本window.open彈出頁面接受,這將在框架內目前呈現在popup.aspx

目標頁面的URL,但因爲URL編碼的我正在傳遞的url parmater在popup.aspx.cs頁面中被截斷。

從JavaScript函數直接調用時,相同的window.open可以正常工作。 但嵌入Href屬性時失敗。

以下是代碼
注意:輸入url參數是使用標準解碼函數的正確解碼url。

<a href="javascript:void window.open('Popup.aspx?url=%2FB2B%2FDEV%2FSHARE%2FGRID%2FXML_GRID_PAGE.ASP%3FGRIDTYPE%3D2%26SID%3D33172D0A-565A-43D7-8D50-5C223B6E8C24%26CAID%3D0%26ViewID%3DPATIENTPROFILE%26InstanceID%3D375660844%C3%BF14542276%C3%BF3%C3%BFSTANDARD','','scrollbars=yes,menubar=yes,resizable=yes,left=30,top=30,height=500,width=650')"> link</a> 

我的假設是當window.open嵌入到href中,然後以某種方式將其解碼並傳遞到目標彈出頁面。

在瀏覽器中看到的示例網址。

https://poorcmcdevvm15.xyz.com//b2b/mainmasterpage/popup.aspx?url=/B2B/DEV/SHARE/GRID/XML_GRID_PAGE.ASP?GRIDTYPE=2&SID=33172D0A-565A-43D7-8D50-5C223B6E8C24&CAID=0&ViewID=PATIENTPROFILE&InstanceID=375660844ÿ14542276ÿ3ÿSTANDARD

時相同window.open通過JavaScript下面是URL中的瀏覽器觀察到稱爲

Popup.aspx?URL =%2FB2B%2FDEV%2FSHARE%2FGRID%2FXML_GRID_PAGE .ASP%3FGRIDTYPE%3D2%26SID%3D33172D0A-565A-43D7-8D50-5C223B6E8C24%26CAID%3D0%26ViewID%3DPATIENTPROFILE%26InstanceID%3D375660844ÿ14542276ÿ3ÿSTANDARD

+1

你爲什麼編碼爲%20 void'和'window.open'之間'的空間?這一點是JavaScript,而不是通過URL傳遞的。 – Oded

+0

從java腳本中刪除%20複製錯誤 – Sachin

回答

1

====================================== ========================================== 我解決了這個問題,非常簡單fix.Initially我編碼輸入url只使用encodeURIComponent函數一次。但在我的情況下,解碼在href屬性中第一次發生兩次,在目標dotnet頁面中第二次發生。所以要解決這個問題,我編碼了輸入url參數兩次,這解決了我的問題。

樣品URL編碼後兩次使用函數encodeURIComponent方法

<a href="javascript:void indow.open('Popup.aspx?url=%252FB2B%252FDEV%252FSHARE%252FGRID%252FXML_GRID_PAGE.ASP%253FGRIDTYPE%253D2%2526SID%253D33172D0A-565A-43D7-8D50-5C223B6E8C24%2526CAID%253D0%2526ViewID%253DPATIENTPROFILE%2526InstanceID%253D375660844%25C3%25BF14542276%25C3%25BF3%25C3%25BFSTANDARD','','scrollbars=yes,menubar=yes,resizable=yes,left=30,top=30,height=500,width=650')"> link2</a>

+0

非常感謝Sachin!這個答案在工作數小時後保存了。在SSRS中的Java Windows.Open也神祕地解碼了這個URL,沒有任何理由阻止了查詢參數的工作。雙編碼是完美的答案! –

0

看來,當你生成URL你之前對其進行解碼。

看看here