javascript框架在显示层有其无法替代优势,但是在一些xhtml格式的web项目直接引用现成的javascript框架,例如dojo ext等等,会出现许多兼容性问题,致使无法正常使用框架,这非常可惜,下面介绍一下我处理方法,可以解决这个兼容性问题。
我的项目使用环境:jsf兼容环境(seam2.0 tomcat6 jboss4.2.2),由于项目其他技术的需要已配置成支持xhtml。
问题:在项目中不使用jsf引擎直接访问页面源码,例如直接访问dojo的测试页面(中文问题已经按照http://xxqn.iteye.com/admin/blogs/182442方法处理过了,否则页面有中文问题),可以正常运行(http://localhost:8080/app/js/dojo/dojo/demo/sample3.html),与直接访问页面文件(file:///F:/YcApp/app/web/js/dojo/dojo/demo/sample3.html)效果一样。
但是将其改造引进到jsf页面中,再访问(http://localhost:8080/app/js/dojo/dojo/demo/sample3.seam),这个页面经过了jsf引擎解释过的了,发现就出现一些兼容性问题,显然这是因为jsf引擎引起的问题,放弃jsf就可以避免,但是这是不可能的,jsf(jsp)引擎对于许多项目来讲是其重要性比javascript框架还重要,如果在二者之间取舍的话,肯定会放弃javascript框架,除非有简便办法将它们二合为一。
为了二合为一的目的,我们再来研究差异现象。由于对于html我也是刚刚接触不太久,各种相关的技术了解不多,但是由于相信一定有合理的解决之道,所以几个月以来一直没有放弃学习思考。经过对比,终于发现差异是由于HTML XHTML的差异造成的
注意两者的类型分别为:text/html application/xhtml+xml 处理模式分别为:标准模式 混杂模式。
处理思路有两个方向:一、修改javascript框架使之适应xhtml的标准处理方式;二、将xhtml“降级”为html。
第一种方法需要修改javascript框架源码,风险和工作量的比较大。第二种方法,可以简便的施行,那么会有什么风险呢,应该讲基本没有,摘一些讲法"其实XHTML就是严谨而准确的HTML。如果说HTML是汉语,那么XHTML就是标准普通话。",可以这样理解,按照xhtml标准写的html页面源代码应该可以运行正常的,反之却不行,也就是所谓的向下兼容。
前面讲到了jsf引擎输出到浏览器的页面按照xhtml格式检验的所有不符合xhtml格式都将提示出错,在输出到浏览器之前将 application/xhtml+xml 标记写入页面通知浏览器这个页面可以按照xhtml标准来解读,为了指示浏览器按照html格式解读页面,需要最后输出到浏览器的时候替换application/xhtml+xml ,改为text/html ,为了达到这样的目的,我们需要使用jsf拦截器。拦截器关键源代码
package filters;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class xhtmlTohtml implements Filter {
public void init(FilterConfig arg0) throws ServletException {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
response.setContentType("text/html");
chain.doFilter(request, response);
}
public void destroy() {
}
}
在web.xml添加拦截器:
<filter>
<filter-name>xhtmlTohtml</filter-name>
<filter-class>filters.xhtmlTohtml</filter-class>
</filter>
<filter-mapping>
<filter-name>xhtmlTohtml</filter-name>
<url-pattern>/myHtmlPage/*</url-pattern>
</filter-mapping>
结论:
这样你就可以在页面中引用javascript框架了,当然html最终还是要被xhtml替代的,在xhtml占到主流的时候,负责任的javascript框架会支持xhtml的,否则的话会被淘汰的。
- 描述: 出现兼容性页面的页面信息
- 大小: 43.4 KB
- 描述: 正常页面的页面信息
- 大小: 44.4 KB
分享到:
相关推荐
在实际应用中,开发者需要考虑兼容性问题,因为不同的浏览器对JavaScript的支持程度可能不同。使用条件注释、工具如Babel进行转译,或者利用jQuery等库可以有效解决这个问题。 总的来说,将JavaScript嵌入XHTML可以...
在学习XHTML时,你会了解如何编写结构化的文档,正确使用标签,理解语义化元素的重要性,以及如何确保文档的跨浏览器兼容性。手册还会涵盖XHTML与CSS的结合使用,以实现内容和表现的分离,提高页面的可访问性和可...
xHTML的严谨性使得文档在不同的浏览器和设备间有更好的兼容性和可读性。 **XML(eXtensible Markup Language)**是一种标记语言,设计用来传输和存储数据,而非显示数据。XML提供了自定义标签的能力,使得数据的...
在XHTML中,所有标签都必须闭合,这对确保代码的正确解析和跨浏览器兼容性至关重要。 CSS(Cascading Style Sheets)则负责控制网页的样式和布局。通过CSS,你可以定义字体、颜色、间距、布局和响应式设计,使得...
1. **浏览器兼容性问题**:不同浏览器对于JavaScript的支持程度不一,可能需要额外处理。 2. **搜索引擎优化困难**:动态生成的内容难以被搜索引擎爬虫抓取。 3. **历史记录管理复杂**:传统的浏览器前进后退功能...
JavaScript还有许多库和框架,如jQuery、React、Angular和Vue.js,进一步提升了开发效率和应用功能。 **DHTML (Dynamic HTML)** DHTML是HTML、CSS和JavaScript结合的产物,用于创建动态、交互性强的网页。DHTML...
兼容性意味着XHTML能够兼容HTML和XML,从而使得现有的网页在转换为XHTML后仍然能够在浏览器中正常显示。适应性体现在XHTML是一种向后兼容的语言,主流浏览器都能够显示XHTML文档。可移植性方面,通过XHTML1.0规范,...
这意味着在XHTML中,所有的HTML标签必须正确关闭,语法更加严谨,有助于提高网页的跨平台兼容性。 CSS(Cascading Style Sheets)是用于控制网页外观和布局的样式表语言。它可以用来改变HTML或XML文档的字体、颜色...
在实践中,网页设计师需要熟悉W3C(World Wide Web Consortium)制定的标准和最佳实践,以确保代码的兼容性和可访问性。此外,熟练运用前端开发框架(如Bootstrap或Foundation)和JavaScript库(如jQuery)能提升...
IE7.js是一个专门针对Internet Explorer浏览器(特别是IE6和IE7)的兼容性解决方案,它旨在让这些旧版本的IE浏览器表现得更像现代的浏览器,如Firefox、Chrome或Safari。这个工具由Dean Edwards开发,其目标是通过...
5. **兼容性问题**:考虑到老版本浏览器可能不支持Ajax或XMLHttpRequest,可以使用jQuery、axios等库来提供兼容性解决方案。 **学习资源推荐** "XHTML ajax 教程.chm"这个文件很可能包含了关于XHTML基础和Ajax实践...
还会涉及如何实现xHTML与CSS和JavaScript的协同工作,以确保网页在不同浏览器间的兼容性和可访问性。 这四本手册作为开发者的指南,提供了从基础到高级的全面知识,不仅适合初学者学习,也适合经验丰富的开发者查阅...
MochiKit是一个高级JavaScript库,受到Python和Python标准库的启发,旨在解决浏览器兼容性问题,特别是对于DOM操作提供了更为便捷的接口。MochiKit.DOM模块是库的核心部分,它专门设计用于处理XHTML文档,使得在...
在XHTML中,必须始终使用引号,以确保代码的兼容性和正确性。 #### 4. 注释 - **HTML**: 注释可以写作`<!-- 这是注释 -->`。 - **XHTML**: 也使用类似的语法`<!-- 这是注释 -->`,但是需要注意的是,XHTML不允许在...
4. **与XML兼容**:这使得XHTML可以利用XML的解析工具和应用程序,提高了数据交换和处理的效率。 XHTML有两类主要的DTD(文档类型定义):**XHTML 1.0 Transitional**和**XHTML 1.0 Strict**。Transitional类型的...
7. **浏览器兼容性**:虽然XHTML1.x已经被XHTML5取代,但XHTML1.x仍然被广泛支持。编写XHTML代码时,需要考虑不同浏览器的解析差异,确保代码的跨平台兼容性。 8. **验证工具**:W3C提供了一个在线的XHTML验证器,...
HTML5是当前广泛使用的版本,引入了许多新元素,增强了多媒体支持和离线存储功能,同时保持了与旧版本的向后兼容性。 CSS(Cascading Style Sheets)则负责定义HTML或XML(包括SVG、MathML等)文档的呈现方式。它...