由于在链接的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中,然后以某种方式将其解码,然后传递给目标弹出页面。
在浏览器中看到的示例网址。
当通过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>
答案 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