Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有子文件夹的ie中带有基标记的Javascript onclick_Javascript_Internet Explorer_Onclick_Base - Fatal编程技术网

带有子文件夹的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(以及我可能会选择的方法,尽管我不知道你的具体情况)
  • 您可以使用一个DOM操纵库,比如jQuery/Dojo/Prototype来循环任何
    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';"