我试图实现一个我发现的图像平移器 here
Chrome 会根据所请求文件的扩展名以不同方式呈现同一文档。我创建了一个测试用例,当文件是 时它可以工作。不是 命名为测试。 xhtml
您可以从 here 下载测试用例
有谁知道为什么或如何解决它?我希望我的文件是 .xhtml
在 IE 和 FF 中它工作正常。
代码:
test.html/test.xhtml(更改名称以查看它适用于一个但不适用于另一个)。
<!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" lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<style type="text/css">
/*Default CSS for pan containers*/
.pancontainer {
position: relative; /*keep this intact*/
overflow: hidden; /*keep this intact*/
width: 300px;
height: 300px;
border: 1px solid black;
}
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="http://www.dynamicdrive.com/dynamicindex4/imagepanner.js"></script>
</head>
<body>
<div class="pancontainer" data-orient="center" data-canzoom="yes" style="width: 350px; height: 200px; float: left; position: relative; overflow-x: hidden; overflow-y: hidden; cursor: move; "><img src="./test_files/image.jpg" style="position: absolute; width: 700px; height: 525px; left: -175px; top: -163px; display: block;" />
</div>
</body>
</html>
更新:
显然,多亏了评论,tomcat 将 application/xhtml+xml 作为 Content-Type 发送。
HTTP_TRANSACTION_READ_RESPONSE_HEADERS
--> HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
X-Powered-By: JSF/1.2
Pragma: no-cache
Cache-Control: no-cache
Cache-Control: no-store
Cache-Control: must-revalidate
Expires: Mon, 8 Aug 2006 10:00:00 GMT
Content-Type: application/xhtml+xml;charset=UTF-8
Transfer-Encoding: chunked
Date: Wed, 09 Jun 2010 07:39:30 GMT
我在
web.xml
中添加了一个 MIME 类型:<mime-mapping>
<extension>xhtml</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
但仍然不起作用。我相信
FacesServlet
正在读取文件扩展名并发送内容类型,覆盖 web.xml
中的配置 <servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
我试图修改 web.xml 配置以将 .xhtml 更改为 .html,但 Faces Servlet 将文件作为 application/xhtml+xml 提供我想我可以向 webapp 添加一个过滤器,将 Content-Type 修改为 text/html但这有点hacky。
为什么带有 Facelets 的 JSF 不将文件作为 html 提供?或者怎么做?
更新 找到了如何从 JSF 提供 text/html。你需要添加
<f:view contentType="text/html"/>
之后
<html>
及之前 <head>
现在它在 chrome 中按预期工作。
最佳答案
DOCTYPE 表示使用哪种标准,DOCTYPE 为 XHTML 的 .html 文件被处理为 XHTML。不知道为什么 Chrome 与扩展名 .xhtml 的行为不同,它可能强制使用某种默认 DOCTYPE 并忽略包含的 DOCTYPE。 XHTML 现在已被放弃,转而支持 HTML 5,不确定您当前的路线是否是您想要遵循的路线,尽管 XHTML 将在 HTML 5 浏览器中呈现。
关于xhtml - chrome根据要渲染的文件扩展名不同渲染js【包含testcase】,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2998727/