使用Internet Explorer的HTML <base> TAG和本地文件夹路径

UGE*_*EEN 11 html internet-explorer

我正在尝试使用<base> TAG来指示包含位于单独文件夹中的html页面的媒体文件的源文件夹.

我有以下文件夹结构:

A
|- HTML_PAGES        (contains html files)
|- MEDIA_FOLDER      (contains the media used by this html pages)
Run Code Online (Sandbox Code Playgroud)

我尝试用html页面使用的媒体来指示html文件 - 所以,在每个html文件中我有这样的东西:

<base href="../MEDIA_FOLDER"/>
Run Code Online (Sandbox Code Playgroud)

问题是:它适用于某些浏览器(Opera,Chrome),但它不适用于Internet Explorer和Firefox.如何使它与IE和Firefox一起使用?

Ric*_*her 32

这肯定是IE中一个非常烦人的错误,但我发现了一个解决方法.

要实现的是IE确实解析了相对路径,然后立即忽略它.您甚至可以通过稍后使用JavaScript检查基本标记的'href'属性的值来查看完全解析的URL.所以这段(相当愚蠢的)代码将<base>标签的'href'属性重置为IE已经解析的非常完整的URL,从而导致它不再被忽略.

将以下HTML添加到页面顶部,紧跟标记之后和实际使用任何网址之前:

<!--[if IE]><script type="text/javascript">
    // Fix for IE ignoring relative base tags.
    (function() {
        var baseTag = document.getElementsByTagName('base')[0];
        baseTag.href = baseTag.href;
    })();
</script><![endif]-->
Run Code Online (Sandbox Code Playgroud)

(必须提供条件注释,因为此代码可能会破坏<base>Safari/Chrome中的标记,而其他浏览器显然不需要它.)

这么傻的虫子.

  • 这为我节省了大量时间.我在我的项目的层次结构深处有一些测试html文件(可以从不同的路径托管,因此URL需要是相对的)并且设置基本href肯定有帮助.`<base href ="../../../ ..">`我只需要弄清楚一次点!做得好! (3认同)

Chr*_*ger 8

看起来IE8和IE9有两个独立的问题.

http://social.msdn.microsoft.com/Forums/en-US/iewebdevelopment/thread/c51bb8b9-40ab-437b-a125-88b660f3e1ca/

http://social.msdn.microsoft.com/Forums/en-US/iewebdevelopment/thread/e5cfdf07-494c-4703-aa4a-34a1a548de05/

似乎在IE8和IE9中工作的解决方法是在基本href中包含http://.我没有在Firefox中遇到任何问题(v9)


Dio*_*ane 2

使用绝对 URL:

<base href="http://yourdomain.com/MEDIA_FOLDER"/>
Run Code Online (Sandbox Code Playgroud)