fub*_*aar 5 internet-explorer internet-explorer-8 ie8-browser-mode
我们有一些HTML页面(本地,而不是Web服务器),它们使用BASE元素来标识包含一堆常见样式表和图像的特定基目录.这是一个示例(页面存储在c:\ temp\html\test.html中,资源目录是c:\ temp\resources):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<base href="file:///c:/temp/resources/"></base>
</head>
<body>
<p><img src="image.jpg" /></p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这在我测试的所有当前浏览器(Firefox,Chrome,IE9)中运行良好,并且在Quirks模式下在IE8中工作正常.但是在IE8标准模式下运行的IE8(此页面的默认设置 - 以及实际页面中所需的模式),任何样式表,脚本或图像引用都被破坏 - 就好像元素被完全忽略一样.
我已尝试过该元素的其他变体 - <base href="file:///c:/temp/resources/">或者<base href="file:///c:/temp/resources/"/>以及各种不同的文件URL,例如file:/// c:/temp/resources/test.html等,以及基础的相对href,但似乎没有说服要加载的图像/样式表/脚本.
我知道上面的例子似乎微不足道,但在我们的实际场景中,我们必须在IE8标准模式下加载IE8中的页面,并且必须设置一个特定的,所以我真的想找到一个解决方案,如果有的话.
我确实发现了一些早期IE8版本中与该元素相关的错误的引用,但它们在很久以前被标记为修复,我在一个干净的Windows 7虚拟机上测试了这个,并且应用了所有IE8更新.
状态更新: 使用:<base href="\\c:\temp\resources\" />
这是我在创建此解决方案时使用的过程,以允许IE8将基本属性用于本地文件.
澄清一下:这个经过 W3C验证的解决方案适用于 IE7,IE8和所有现代浏览器!
参考截图::
在这里你可以看到IE8地址栏不工作像其他现代浏览器:在斜线逆转并没有file:///看到协议.但是,IE8会在页面刷新时file:///在浏览器的状态栏中显示协议!

参考屏幕截图:
由于IE8以不同方式处理本地文件,因此了解IE8协议file:///非常重要.
要实现什么样的语法方式可供选择,观看Internet选项(安全选项卡)为本地Intranet将会给我们的信息.这里实际上没有做任何更改,只需要语法:

在上面的照片中,本地Intranet窗口确认需要反斜杠.
此外,它显示该file:\\协议与此斜杠语法相关联.由于file:///协议是由IE8自动隐含的(之前提到过:请参阅浏览器的状态栏并注意斜杠是否正确!!).在标签中
定义此file:协议Base是个问题.解决方案是不使用协议!
参考链接1:无 协议URL方案:
它并不完全是轻量级读取,但RFC 3986的4.2节提供了完全限定协议(HTTP或HTTPS)的完全限定URL.当省略URL的协议时,浏览器将使用基础文档的协议.
参考链接2: 了解Paul Irish的网络路径参考:
*当然,如果您在本地查看文件,它将尝试使用
file://协议请求文件.
上面的参考文献解释说,使用//将允许任何浏览器在访问文件或资产时使用当前已知的URL方案.由于IE8是游戏规则改变者,因为所有浏览器都会将其转换/解释为标准URL Scheme(隐含本地文件),包括浏览器IE7,因此使用\\而不是//将其用于Base标记!file:///
完整的HTML标记| 工作演示:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Using Base Tag with Local Files IE8 and Modern Browser DEMO</title>
<!-- The name of this file is: test.html -->
<!-- The location of this HTML file on the hard drive is: C:\temp\html\test.html -->
<!-- This unusually constructed Base attribute tag uses two rules to have it work for Locally Hosted IE8 Files that are not server based. -->
<!-- First, the "URL Scheme" is based on "Network Path Reference" which means no Protocol is used. -->
<!-- Second, the "forward slashes" are changed to "back slashes". It's the syntax IE8 actually expects. -->
<!-- This entire method is also friendly for modern browsers showing these local files that are not server based. -->
<base href="\\c:\temp\resources\" />
</head>
<body>
<p>
<!-- The location of this "image.jpg" on the hard drive is at: C:\temp\resources\image.jpg -->
<img src="image.jpg" alt="image" />
</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2846 次 |
| 最近记录: |