`

ExtJS 验证码 浏览器兼容

 
阅读更多

ExtJS布局浏览器兼容问题

 

在写ExtJS前台进行布局时由于ExtJS本身的布局管理器会产生默认的一些布局样式,但是由于不同浏览器的对不同ExtJS的解释不同造成了浏览器的兼容问题,这样需要我们在特定的地方设定特定的样式,以兼容不同的浏览器例如IE浏览器。

例1:Panle的html元素造成的浏览器不兼容

var leftpanel = new Ext.Panel({
		columnWidth:.5,
		autoHeight:true,
		border:false,
		heigth:'100%',
		bodyStyle:'background:#D4E1F2;',
		layout:'fit',
		//只能在chrome中使用的方法
		html:'<div style="height:100%;position:relative;top:100px;">' +
				  '<div style="margin-left:40px;top:30px;font-size:25px;color:#008127;font-weight:bold;">' +
				  		  'xxxxxx测算系统' +
				  '</div>' +
				  '<div style="height:150px;font-size:15px;margin-left:40px;margin-top:10px;>' +
				          '<p style="margin-top:10px;">1-以《xxxxxxxxxx》(UNFCCC)下“xxxxxxxxxx”的方法学模板为基础</p>' +
				  		  '<p style="margin-top:10px;">2-xxxxxxxxxx(xx)xxxxx</p>' +
		  		   		  '<p style="margin-top:10px;">3-xxxxxxxx《xxxxxxxxxxxxxx》</p>' +
				  '</div>'+
				  '<div style="height:150px;margin-top:10px;margin-left:120px;">' +
					  	'<img alt="使用说明" id="instruction" src="./images/computer.png"/><span><a href="#">使用说明</a></span>' +
					  	'&nbsp;&nbsp;&nbsp;'+
					  	'<img alt="在线客服" id="service" src="./images/user_red.png"/><span><a href="#">使用说明</a></span>'+
				  '</div>'+
			'</div>' 
	});

 这里有一些必要设的样式:style="height:150px;如果不设置在IE浏览器中将显示不出来,但是在chrome中可以显示出来。

例2:未设置相应的属性造成的浏览器不兼容,例如下的前台验证码在IE下不能正常显示

var formpanel = new Ext.FormPanel({
		columnWidth:.5,
		autoHeight:true,//如果是100%相当于制定高需要设置为false
		buttonAlign:'left',
		bodyStyle:'background-color:#D4E1F2;',
		style:'margin:100px 5px 15px 40px;background:#D4E1F2;',
		height:'100%',
		border:false,
		items:[
		{
			xtype:'label',
			text:'系统后台登陆',
			style:'margin-left:40px;font-size:25px;font-weight:bold;color:#008127;'
		},{
			xtype:'textfield',
			fieldLabel:'用户名',
			labelStyle:'font-size:15px;text-align:right;top:5px;',
			name:'username',
			id:'username',
			style:'margin-top:10px',
			width:'200',
			allowBlank:'用户名不能为空',
			minLength:6,
			minLengthText:'用户名长度为[6-20]',
			maxLength:20,
			maxLength:'用户名长度为[6-20]'
		},{
			xtype:'textfield',
			intputType:'password',
			fieldLabel:'密码',
			labelStyle:'font-size:15px;text-align:right;top:5px;',
			style:'margin-top:10px',
			name:'username',
			id:'passwd',
			width:'200',
			allowBlank:'用户名不能为空',
			minLength:6,
			minLengthText:'用户名长度为[6-20]',
			maxLength:20,
			maxLength:'用户名长度为[6-20]'
		},{
			xtype:'textfield',
			fieldLabel:'验证码',
			labelStyle:'font-size:15px;text-align:right;top:5px;',
			id:'randCode',
			style:'margin-top:5px',
			name:'val',
			allowBlank:false,
			blankText:'验证码不能为空'
		}
		],
		buttons:[
		{	
			text:'登陆',
			style:'margin-left:60px;margin-top:10px',
			handler:function()
			{
				if(!formpanel.getForm().isValid()) return;
				formpanel.getForm().submit();
			}
		},
		{
			xtype:'button',
			text:'重设',
			style:'margin-top:10px',
			handler:function()
			{
				if(!formpanel.getForm().isValid()) return;
				formpanel.getForm().submit();
			}
		},{
			text:'注册',
			style:'margin-top:10px',
			handler:function()
			{
				if(!formpanel.getForm().isValid()) return;
				formpanel.getForm().submit();
			}
		}
		]
	});//end_form

 

var rc = Ext.getDom("randCode");

var rcp = Ext.get(rc.parentNode);

    rcp.createChild([{

       tag:'span',

       //height:'25px',

       width:'100%',

       autoHeight:false,

       html:'<astyle="padding-left:5px;height:30px;"href="javascript:reloadcode();">'

    },{

       tag:'img',

       //width:'70px',

       height:'25px',

       id:'img',

       src:'CheckCodeServlet.do',

       align:'absbottom'

 生成验证码的代码:

package org.hj.sevlet.login;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Random;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * @author DingJie
 */
public class CheckCodeServlet extends HttpServlet {

	private static final long serialVersionUID = 334172696087613109L;

	/**
	 * 设定验证码位数
	 * @param size
	 * @return
	 */
	private String getNumber(int size) {
		String str = "";
		char[] chars = new char[36];
		for (int i = 0; i < chars.length; i++) {
			chars[i] = (char) ('A' + i);
			if (i > 25) {
				chars[i] = (char) ((i - 26) + '0');
			}
		}
		Random random = new Random();
		for (int i = 0; i < size; i++) {
			str += chars[random.nextInt(chars.length)];
		}
		return str;
	}
	
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		//设置缓存不保留
		response.setHeader("Pragma","No-cache");
		response.setHeader("Cahce-Control","no-cache");
		response.setDateHeader("Expires",0);
		System.out.println("service running...");
		// S1、创建一个内存映射对象
		BufferedImage image = new BufferedImage(60, 20,
				BufferedImage.TYPE_INT_BGR);
		// S2、获得画笔
		Graphics graphics = image.getGraphics();
		// 给画笔上色
		Random ran = new Random();
		String number = getNumber(4);// 设定验证码4位数
		HttpSession session = request.getSession();
		session.setAttribute("number", number);//设置到session中
		graphics.setColor(new Color(ran.nextInt(256), ran.nextInt(256), ran
				.nextInt(256)));
		// S3、设置背景色
		graphics.fillRect(0, 0, 60, 20);
		// S4、绘画
		// String number=ran.nextInt(99999)+"";
		graphics.setColor(new Color(0, 0, 0));
		graphics.drawString(number, 10, 15);
		// 添加干扰线
		for (int i = 0; i < 3; i++) {
			graphics.setColor(new Color(ran.nextInt(256), ran.nextInt(256), ran
					.nextInt(256)));
			graphics.drawLine(ran.nextInt(60), ran.nextInt(20),
					ran.nextInt(60), ran.nextInt(20));
		}
		// S5、将图片压缩并发送到浏览器
		// 设置content-type消息头,告诉浏览器返回的数据的类型
		response.setContentType("image/jpeg");
		OutputStream outputStream = response.getOutputStream();
		javax.imageio.ImageIO.write(image, "jpeg", outputStream);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doGet(req, resp);
	}
}

 最终效果:

 

 

  • 大小: 97.2 KB
分享到:
评论

相关推荐

    extjs 登陆页面+验证码

    标题中的“extjs 登录页面+验证码”表明我们要讨论的是使用ExtJS框架构建的一个登录页面,其中包含了验证码功能。ExtJS是一个流行的JavaScript库,用于构建桌面级的Web应用程序,它提供了丰富的用户界面组件和强大的...

    Extjs4 图片浏览器

    ExtJS4图片浏览器是一款基于ExtJS4框架开发的用于展示和浏览图片的应用程序。ExtJS是一个强大的JavaScript库,专门用于构建富客户端Web应用程序。这款图片浏览器利用了ExtJS4的组件化、数据绑定和事件处理等特性,为...

    ExtJS登入验证码的实现

    在这个特定的场景中,我们要探讨的是如何在ExtJS中实现一个登录验证系统,特别是涉及到验证码的生成和验证。 验证码(CAPTCHA)是一种防止恶意自动化程序(如机器人)进行非法操作的安全机制。它通常要求用户输入...

    Extjs4登录功能+验证码+struts2

    在"Extjs4登录功能+验证码+struts2"这个主题中,我们将深入探讨如何利用ExtJS4构建一个带有验证码功能的登录界面,并结合Struts2后端框架实现数据验证和处理。 首先,登录功能是Web应用的基础部分,通常包含用户名...

    apring+extjs 数据库浏览器

    标题中的“apring+extjs 数据库浏览器”指的是一个基于Spring框架和ExtJS库开发的数据库管理工具。这个工具允许用户以图形化的方式浏览和操作数据库,提供了对数据库的便捷访问和管理功能。 Spring是一个开源的Java...

    Extjs之--图片浏览器

    标题中的“Extjs之--图片浏览器”指的是使用Ext JS框架构建的一个用于查看和浏览图片的应用程序。Ext JS是一个流行的JavaScript库,它提供了丰富的组件和工具,用于开发复杂的Web应用程序。这个图片浏览器可能是一个...

    解决Extjs3.0不兼容IE9

    项目中遇到Extjs3.0在IE9中不兼容,现有两种解决方法

    extjs浏览器问题

    标题中的“extjs浏览器问题”指的是使用ExtJS框架在不同浏览器上出现的兼容性问题,特别是针对Internet Explorer(IE)浏览器出现的语法错误。ExtJS是一个用于构建富客户端Web应用程序的JavaScript库,它依赖于现代...

    extjs中 google 不兼容 datefield 控件

    在本篇文章中,我们将深入探讨一个具体的技术问题:在ExtJS框架中,Google浏览器与DateField控件的不兼容性问题。这个问题对于那些正在使用ExtJS进行Web应用程序开发的开发者来说,是一个非常实用且需要解决的技术...

    EXTJS 强大的图片查看器 仿windows照片查看器

    EXTJS 是一个基于JavaScript的富客户端应用框架,用于构建交互式、桌面级的Web应用程序。在给定的“EXTJS 强大的图片查看器 仿windows照片查看器”项目中,我们可以了解到,这个组件是EXTJS框架的一个扩展,旨在提供...

    解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题

    在Web开发中,浏览器兼容性问题常常困扰着开发者,尤其是涉及到JavaScript库如ExtJS时。本文将探讨如何解决一个常见的问题:ExtJS在Chrome和Firefox中正常显示,但在Internet Explorer (IE) 中无法正常加载。这个...

    Extjs 关于 cookie的操作

    ### Extjs 中关于 Cookie 的操作 #### 一、引言 在 Web 开发中,Cookie 是一种常用的数据存储方式,用于保存用户的一些基本信息或者状态,从而实现网站的个性化设置或登录状态保持等功能。Extjs 作为一种强大的 ...

    ExtJS教程_完整版

    ExtJS自带的控件如窗口、表格、表单等能够在主流浏览器中保持一致的显示效果,从而减轻了浏览器兼容性的负担。其简单而强大的API设计使得创建复杂的用户交互变得简单,比如通过EventManager进行用户事件监听和处理,...

    ExtJs详细介绍

    通过使用ExtJs的控件,可以很好地控制浏览器的兼容性,使得不同浏览器中的控件显示几乎相同。这包括Internet Explorer 6+,Firefox 1.5+(PC,Mac),Safari 2+,Opera 9+(PC,Mac)等主流浏览器。 ExtJs还提供了...

    extjs实现登陆验证

    在IT领域,特别是Web开发中,使用ExtJS框架进行用户登录界面的前端验证是一个常见的需求。根据提供的文件信息,我们可以详细解析如何利用ExtJS来实现这一功能。 ### ExtJS实现登录验证 #### 核心概念与流程 1. **...

    解决extjs API文档不断Loading

    这可能是由于多种原因引起的,包括网络连接问题、浏览器兼容性问题、文档资源加载错误或是ExtJS库本身的问题。以下是对这个问题的深入探讨和解决方案: 1. **网络连接问题**: 当API文档的服务器响应缓慢或网络...

    extjs 3.4 开发前准备

    对于跨浏览器兼容性测试,IE仍然是不可忽视的一部分。 - Firebug: 作为Firefox的插件,提供源代码查看、断点调试、性能分析等功能。 - Spket: 是一个强大的JavaScript开发工具,可以作为Eclipse插件使用,提供代码...

    extJs3升级extjs4方案

    ExtJS3 升级到 ExtJS4 需要修改大量代码,主要是因为 ExtJS4 配备了一类新的系统,不向后兼容。在 ExtJS 3 里生成表的几个框架组件,ExtJS4 大多生成 div,这使得 CSS classes 将会失败。ExtJS4 已完全重新写 grid ...

    ExtJS

    总结这些资源,我们可以看出这个压缩包的内容主要集中在JavaScript的浏览器兼容性,尤其是针对ExtJS开发时可能遇到的问题。了解并掌握这些知识对于一个使用ExtJS的开发者来说至关重要,因为良好的浏览器兼容性是保证...

Global site tag (gtag.js) - Google Analytics