TL;博士
我已经阅读了有关此问题的许多有关 Stack Overflow 的问题,并尝试遵循给定的建议。不过,我的 CSS 样式表在 Chrome/Safari 中无法使用,但可以在 Internet Explorer 中使用。
关于我的场景,我能看到的唯一奇怪的事情是我的服务器正在返回所有类型为 的文件application/octet-stream
。我无法更改服务器的这一方面。我可以做些什么来将我的 CSS 文件解释为 Chrome/Safari 和 IE 中的样式表吗?
我有一个正在处理的嵌入式 Web 服务器项目。我对服务器软件的控制和进行页面级设置的能力非常有限。我所能做的就是创建编译到服务器应用程序中的静态 HTML、CSS 和图像文件。
因此,从嵌入式服务器返回的所有文件都application/octet-stream
在HTTP
标头中声明。这会在 Chrome 中产生警告,但不会出现错误。
最初,我在 Chrome/Safari 中加载此样式表时遇到问题,但它可以在 IE 中使用。在阅读了有关 Stack Overflow 的几个问题后,我发现我需要将样式表声明从以下位置更改:
<link rel="stylesheet" href="/styles/index.css">
到:
<link rel="stylesheet" type="text/css" href="/styles/index.css">
当我进行此更改时,Chrome 和 Safari 仍然无法处理 CSS 文件,但 IE 也开始忽略样式表。
奇怪的是,如果我不在我的 HTML 文档上声明 a DOCTYPE
,我可以让链接的样式表在我的所有浏览器中工作。然而,这不是一个理想的解决方案。
我的猜测是这个问题与标头声明有关,并且它与元素HTTP
中声明的类型不匹配。link
在遵循良好的 Web 开发实践代码(即在我的 HTML 文件上使用 doctypes 并且不在 HTML 标头中嵌入样式代码?)的同时,我可以做些什么来让这个样式表在 Chrome、Safari 和 IE 中工作?
为清楚起见,相关的 CSS/HTML 代码如下所示。
索引.css
html {height:100%}
body {margin:0;min-height:100%;position:relative}
iframe {width:100%;height:100%;border:none}
.hdr {min-width:765px;overflow:auto}
.logo1 {float:left;margin:4px}
.logo2 {float:right;margin:4px}
.menu {position:absolute;top:70px;left:0px;bottom:0px;width:175px}
.content {position:absolute;top:70px;left:175px;bottom:0px;right:0px;}
索引.htm
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<link rel="stylesheet" href="/styles/index.css"> <!-- Removed the type declaration so that this would at least work in IE9 //-->
</head>
<body lang="en-us">
<div class="hdr"><img class="logo1" src="/images/logo1.png" alt="Logo #1"><img class="logo2" src="/images/logo2.png" alt="Logo #2"></div>
<div class="menu"><iframe name="menu" src="/menu.shtm"></iframe></div>
<div class="content"><iframe name="main" src="/home.htm"></iframe></div>
</body>
仅供参考,这是一个正在从现有项目开发的新项目。原始项目没有DOCTYPE
在 HTML 文件上声明 a。因此,所有页面数据都以怪异模式在浏览器中加载和执行。此外,index.htm
最初由多个frames
在一个frameset
.
我正在尝试更新此应用程序,使用正确且最新的方法来开发网页。我可以让这个应用程序工作,但我觉得如果我不得不依赖浏览器怪癖模式和框架集,这将牺牲未来浏览器的兼容性。
我试图关闭链接标签,但这无济于事。从技术上讲,这应该不是问题,因为该文档被声明为 HTML5 文档,而不是 XHTML。