带有子文件夹的ie中带有基标记的Javascript onclick
尝试以下操作:在网站中创建一个文件夹带有子文件夹的ie中带有基标记的Javascript onclick,javascript,internet-explorer,onclick,base,Javascript,Internet Explorer,Onclick,Base,尝试以下操作:在网站中创建一个文件夹test,并将此html文件(test.html)放入其中: 点击我 单击您喜爱的浏览器中的链接。网址是什么 点击IE中的链接。URL是什么 编辑:IE带你去: 解决这个问题的方法不是(1)删除base标记,(2)更改onclick以使用附加正确base的函数吗?是否有方法覆盖IE中的window.location.href函数?将我的test.htm移动到名为test的子目录(最终相对路径:test/test.htm)后,我能够确认该错误(我最初误解了您
test
,并将此html文件(test.html
)放入其中:
点击我
单击您喜爱的浏览器中的链接。网址是什么
点击IE中的链接。URL是什么
编辑:IE带你去:
解决这个问题的方法不是(1)删除base标记,(2)更改onclick以使用附加正确base的函数吗?是否有方法覆盖IE中的window.location.href函数?将我的
test.htm
移动到名为test
的子目录(最终相对路径:test/test.htm
)后,我能够确认该错误(我最初误解了您的问题),或者至少是
标签的非标准实现(这可能只是微软没有按照规范遵循实现的另一种情况)
IE将为任何已定义的锚提供
标签
<a href="test/test.html">Click me</span>
点击我
将转到http://www.site.com/test/test.html
(前提是
标记不是关闭的,或者对于旧版本的IE来说不是自关闭的),但是IE(所有版本)将只支持锚定的基本标记,而不是JavaScript
IE在URL中添加额外的test/
的原因实际上是符合标准的行为。由于IE忽略了
标记,您的test/test.html
链接表明有一个名为test
的子目录,其中包含一个相对于当前目录(test
)的test.html
文件,IE可以正确导航到“test/test/test.html”
至于如何修复它
标记没有帮助onclick
更改为返回正确的基本URL的函数将起作用,但您已声明这是不可接受的window.location.href
是一个字符串,而不是一个函数,因此“覆盖”它是一个非启动项onclick
以使用绝对URL也可以onclick
属性并通过JavaScript(attachEvent
或addEventListener
)分配它们将更有效(内容/行为分离),并允许您轻松附加正确的基本URL(以及我可能会选择的方法,尽管我不知道你的具体情况)onclick
属性,并将URL更新为绝对URL这显然仍然是IE11中的一个问题。我刚才遇到了它。我所做的是:
onclick="window.location=document.getElementsByTagName('base')[0].href+'your_url_destination';"
它需要修改onclick行,但不需要单独的功能。它应该适用于所有浏览器,到目前为止对我来说都是如此。如果你说了你看到的,我可能会尝试回答这个问题,而不是让我尝试。反问句很容易记住,但不是很透明。IE带你去:
http://www.site.com/test/test/test.html?完成!
你好,皮特。不应该有一个文件C:\Users\Pete\Desktop\test.html
。test.html
文件应该只存在于文件夹test
(另外,只有一个html文件,而不是test.htm
和test.html
)。在我的实际应用程序中,我有一个文件夹reports
。在该文件夹中,我有一个默认页面,它列出并链接到所有报告页面,带有相对URL和基本标记,如reports\report1.html
。如果我使用
,则尊重基本标记。但如果我使用javascript onlick location.href,则失败因为它试图转到\reports\reports\report1.html
@SeanW:Bug已确认。更新了答案。谢谢Pete。我已将其标记为答案,尽管它不是我想要的答案。
onclick="window.location=document.getElementsByTagName('base')[0].href+'your_url_destination';"