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中的标记,而其他浏览器显然不需要它.)
这么傻的虫子.
看起来IE8和IE9有两个独立的问题.
似乎在IE8和IE9中工作的解决方法是在基本href中包含http://.我没有在Firefox中遇到任何问题(v9)
使用绝对 URL:
<base href="http://yourdomain.com/MEDIA_FOLDER"/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18092 次 |
| 最近记录: |