我正在更新一个只能在IE 6-9中正常运行的非常旧的Web应用程序(webforms)。它最初不是我写的。另外,我不是Web开发方面的专家,因此解决方案可能非常简单。
一个问题是window.showModalDialog
的广泛使用,这是一个特定于IE的调用,它打开一个新的浏览器窗口,禁用打开它的浏览器窗口,如弹出消息。这已被替换为jquery模式对话框,但有时会传递给它的'url'有问题。
以下是该问题的简化复制。有一个javascript函数,它需要一个url和一个id。
function openEdit(url, id) { ...
此功能存在于原始版本中,但它具有打开模式弹出窗口的代码。我用必要的jquery替换它。但是,传递的url
值有时没有足够的信息。另外,假设我无法控制在此处传递的值。
假设主页位于localhost/TestSite/Main.aspx
。此页面中有许多框架显示其他页面,例如localhost/TestSite/Products/ProductList.aspx
- 单击此页面上的项目可能会打开localhost/TestSite/Products/ProductDetails.aspx
的窗口。有数百个页面遵循这种通用格式。
有时url
的值为'/TestSite/Products/ProductDetails.aspx'。 jquery对话框正确导航到localhost/TestSite/Products/ProductDetails.aspx
但是,其他页面只是传递了页面名称'ProductDetails.aspx',jquery试图在localhost/TestSite/ProductDetails.aspx
找到它。这适用于使用window.showModalDialog
的IE浏览器,并且浏览器能够获得“Product”的预期目录,因为它与打开窗口调用的目录相同。 Jquery似乎没有实现这一飞跃。
现在,我有一个可能的解决方案,使用window.location
来获取当前网址,稍微解析它,并生成一个有效的网址。我担心这会产生什么样的边缘情况,这似乎也是不正确的做法。
有没有办法让jquery使用corrent目录打开一个对话框,或者有没有办法生成一个不涉及window.location
的当前目录?或者这是我最好的选择。