gpt4 book ai didi

xhtml - chrome根据要渲染的文件扩展名不同渲染js【包含testcase】

转载 作者:行者123 更新时间:2023-12-01 01:34:10 25 4
gpt4 key购买 nike

我试图实现一个我发现的图像平移器 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com