在href属性中使用window.open的问题

时间:2011-11-18 15:11:35

标签: javascript asp.net

由于在链接的href属性下使用window.open函数中的URL编码,我面临一个问题。

基本上我正在尝试使用window.open函数在我的网站中打开一个通用弹出窗口。这个弹出页面接受目标页面url,它将在popup.aspx上的框架内呈现

但由于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

当通过javascript调用同一个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ÿ14542276ÿ3ÿSTANDARD< / p>

2 个答案:

答案 0 :(得分:1)

=============================================== ================================= 我解决了这个问题,非常简单的修复。最初我只使用encodeURIComponent函数编码输入url一次。但在我的情况下,解码首先在href属性中发生两次,在目标dotnet页面上发生第二次。所以为了解决这个问题,我已经对输入url参数进行了两次编码,这解决了我的问题。

使用函数encodeURIComponent

编码两次后的Url示例

<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>

答案 1 :(得分:0)

似乎在生成URL时,您必须先解码它。

看看here