Javascript 在href属性中打开window.open时出现问题

Javascript 在href属性中打开window.open时出现问题,javascript,asp.net,Javascript,Asp.net,我面临一个问题,因为在link的href属性下使用window.open函数时使用了URL编码 基本上,我正在尝试使用window.open函数在我的站点中打开一个通用弹出窗口。此弹出页面接受目标页面url,该url将呈现在popup.aspx上的框架内 但由于url编码,我要传递的url参数在popup.aspx.cs页面中被截断 当直接从JavaScript函数调用时,相同的window.open可以正常工作。 但嵌入Href属性时失败 下面是代码 注意:输入url参数是使用标准解码功能正确

我面临一个问题,因为在link的href属性下使用window.open函数时使用了URL编码

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

但由于url编码,我要传递的url参数在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中时,它会被解码,然后传递到目标弹出页面

在浏览器中看到的示例url

?14542276?3?标准

当通过下面的javascript调用相同的window.open时,就是在浏览器中观察到的url


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

似乎在生成url之前必须对其进行解码


看一看

================================================================================ 我解决了这个问题,非常简单的修复。最初我只使用encodeURIComponent函数对输入url进行了一次编码。但在我的例子中,解码会发生两次,第一次是在href属性中,第二次是在目标dotnet页面上。为了解决这个问题,我对输入url参数进行了两次编码,这就解决了我的问题

使用函数encodeURIComponent编码两次后的示例Url


为什么要对
void
窗口之间的空格进行编码。打开
到%20?这是javascript,不是传入URL的一部分。从java脚本复制错误中删除%20非常感谢Sachin!这个答案挽救了工作数小时后的一天。SSRS中的JavaWindows.Open也在毫无理由地神秘地解码url,从而停止了查询参数的工作。双重编码是完美的答案!!