`
八岭书生
  • 浏览: 104693 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

同时兼容IE和FireFox的事件处理event代码--添加文件上传例子

阅读更多

一、向指定的table中插入tr和td

1. insertRow

  insertRow() 方法用于在表格中的指定位置插入一个新行。

语法

  tableObject.insertRow(index)

返回值

  返回一个 TableRow,表示新插入的行。

说明

  该方法创建一个新的 TableRow 对象,表示一个新的 <tr> 标记,并把它插入表中的指定位置。   新行将被插入 index 所在行之前。若 index 等于表中的行数,则新行将被附加到表的末尾。   如果表是空的,则新行将被插入到一个新的 <tbody> 段,该段自身会被插入表中。

抛出

  若参数 index 小于 0 或大于等于表中的行数,该方法将抛出代码为 INDEX_SIZE_ERR 的 DOMException 异常。

2. insertCell

定义和用法

  insertCell()方法用于在 HTML 表的一行的指定位置插入一个空的 <td> 元素。

语法

  tablerowObject.insertCell(index)返回值  一个 TableCell 对象,表示新创建并被插入的 <td> 元素。

说明

  该方法将创建一个新的 <td> 元素,把它插入行中指定的位置。新单元格将被插入当前位于 index 指定位置的表元之前。如果 index 等于行中的单元格数,则新单元格被附加在行的末尾。   请注意,该方法只能插入 <td> 数据表元。若需要给行添加头表元,必须用 Document.createElement() 方法和 Node.insertBefore() 方法(或相关的方法)创建并插入一个 <th> 元素。

抛出

  若参数 index 小于 0 或大于等于行中的的表元数,该方法将抛出代码为 INDEX_SIZE_ERR 的 DOMException 异常。

 

3. deleteRow

       deleteRow() 方法用于从表格删除指定位置的行。

 

 

二、事件event在IE和FireFox中的兼容性问题

 

问题详细描述:
 

        window.event无法在firefox上运行W3C不支持windows.event。
 
解決方法:

 
    可写成如下三种方式:

 
        ① 传入event参数
     
function testEvent(evt) {
         evt = evt ? evt : (window.event ? window.event :null);alert(evt);
 }

 <input type="button" value="测试event" onclick="javascript:testEvent(event)"/>
         
     ②不传event参数
 
       
var evt = window.event || arguments.callee.caller.arguments[0]; //获取event对象
 
       ③ 自定义event方法
   
function getEvent(){     
    if(document.all)    
    	return window.event;        
    func=getEvent.caller;            
    while(func!=null){    
      	var arg0=func.arguments[0];
        if(arg0){
           if((arg0.constructor==Event || arg0.constructor==MouseEvent)
             || (typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation)){    
                return arg0;
            }
        }
      	func=func.caller;
    }
    return null;
}


var evt = getEvent();// 获取event对象
 

     IE下,event对象有srcElement属性,但是没有target属性;Firefox下,event对象有target属性,但是没有srcElement属性


三、添加文件上传例子

upload.html

<script type="text/javascript" src="js/multipleUpload.js"></script>
<script type="text/javascript">
	  function save() {
	  	var the_inputs = document.getElementsByTagName("input");// 获取所有input的标签
	  	for(var n=0; n<the_inputs.length; n++){
	  			if(the_inputs[n].type == "file"){
	  				if(the_inputs[n].value == "") {
	  					alert("附件不能为空!");
	  					return false;	
	  				}	
	  			}
	  	}	  	
	 	}
	 	
	 	function testEvent(evt) {
       evt = evt ? evt : (window.event ? window.event : null);
       alert(evt);
    }
</script>
 
<tr>
    <td>
    	 <label for="_control_file" class="dialog_label">附件:</label>
       <div id="fileDiv" >
       		<table id="conditionTable"  class="sort-table" ></table>
       </div>
       <a href="javascript:void(0);" onclick="addFile();" class="file">添加附件</a>
    </td>
   </tr>
   <tr>
   	<td><input type="button" class="button" name="saveForm" value="保存" onClick="save()"/></td>	
   	<td><input type="button" class="button" value="测试event" onClick="javascript:testEvent(event)"/></td>	
   </tr>

 multipleUpload.js

/* 向指定的table中插入tr和td */

	var i = 0;
	
	function addFile() {
		i++;
		currRow=document.getElementById('conditionTable').insertRow(0);// 在表格的开头插入一个新行
		cellc=currRow.insertCell(0);// 表的一行的指定位置插入一个空的 <td> 元素
		cellcContext="<input type='file' id='file_com' contentEditable='false'  name='file("
		    + (i - 1)
		    + ")' size='65'>&nbsp;&nbsp;<button onclick='javascript:removeFile(event);'>删除</button><br>";
		cellc.innerHTML=cellcContext;
		// onclick='removeFile();'
	}
	
	function findTD(o) {
		if (o.tagName=="TR" || o.tagName=="TABLE") // event.srcElement.tagName捕获活动标记名称
		   return;
		if (o.tagName=="TD")
		   return (o);
		else
		   return (o.parentElement);// 鼠标所在对象的上一个对象
	}
	
	function removeFile(evt) {
		evt = evt ? evt : (window.event ? window.event : null);// 传event参数(方法一)
		//var evt=window.event || arguments.callee.caller.arguments[0]; // 不传event参数(方法二)
		//var evt=getEvent();// 获取event对象(方法三)
		
		var element=evt.srcElement || evt.target;// FF中的event有这个target属性
		o=findTD(element);
		document.getElementById('conditionTable').deleteRow(o.parentElement.rowIndex * 1);
	}
	
	function getEvent(){     //同时兼容ie和ff的写法
    if(document.all)    
    	return window.event;        
    func=getEvent.caller;            
    while(func!=null){    
      	var arg0=func.arguments[0];
        if(arg0){
           if((arg0.constructor==Event || arg0.constructor==MouseEvent)
             || (typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation)){    
                return arg0;
            }
        }
      	func=func.caller;
    }
    return null;
 	}
 

分享到:
评论

相关推荐

    firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码

    为了更直观地理解两种浏览器中的事件处理差异,我们将通过几个具体的示例来展示如何编写兼容Firefox和IE的事件处理代码。 ##### 3.1 示例1:基本事件处理 ```html 按钮1 按钮2 按钮3 window.onload = function()...

    window.event.keyCode兼容IE和Firefox实现js代码

    // 兼容IE和Firefox,获取event对象 evt = (evt) ? evt : ((window.event) ? window.event : ""); // 兼容IE和Firefox,获取keyCode var key = evt.keyCode ? evt.keyCode : evt.which; // 显示按键键值 ...

    一个兼容IE、Chrome和Firfox的HTML固定表头例子

    标题中的“一个兼容IE、Chrome和Firefox的HTML固定表头例子”表明这是一个关于网页开发的示例,重点在于实现表格的表头在滚动时保持固定显示,以提供更好的用户阅读体验。这种技术通常用于大数据量的表格,使用户在...

    一些Javascript的IE和Firefox(火狐)兼容性的问题总结及常用例子

    - IE提供了全局`window.event`对象,Firefox则在事件处理函数中传递事件对象。可以使用如下代码进行兼容处理: ```javascript function Submitted(evt) { evt = evt || (window.event ? window.event : null); ...

    让Firefox支持event对象实现代码

    标题提到的"让Firefox支持event对象实现代码"主要是针对IE和Firefox之间对事件处理方式的差异。IE浏览器在事件处理函数中可以直接通过`window.event`访问到事件对象,而Firefox则不支持这种方式。描述中给出了一个...

    Enter转换为Tab的小例子(兼容IE,Firefox)

    这个小例子就是关于如何用JavaScript实现这个功能,使其兼容IE和Firefox浏览器。 首先,我们需要监听键盘事件,以便在用户按下回车键时执行相应的操作。在JavaScript中,我们可以使用`document.onkeydown`来全局...

    jquery监听鼠标滚轮事件+js监听滚轮事件

    这是因为不同浏览器对滚轮事件的支持不同,`mousewheel`是大部分浏览器支持的事件,而`DOMMouseScroll`主要在Firefox中使用。 以下是一个简单的jQuery监听滚轮事件的例子: ```javascript $(document).ready...

    IE的事件传递-event.cancelBubble示例介绍

    了解`event.cancelBubble`对于编写兼容IE浏览器的JavaScript代码是至关重要的,尤其是在处理复杂的交互和事件处理时,它可以让你精确地控制事件的传播路径,从而避免不必要的事件处理和提高性能。在现代浏览器中,...

    js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)

    本文将详细介绍如何使用JavaScript编写兼容IE6/7/8、Firefox以及Chrome等主流浏览器的回车键和鼠标焦点事件的代码。 首先,我们来看如何处理回车键事件。在JavaScript中,用户按下回车键时会触发`keydown`或`keyup`...

    兼容ie和firefox版本的js反选 全选 多选框

    总之,这个例子提供了一个简洁的解决方案,通过简单的JavaScript逻辑来处理IE和Firefox的兼容性问题,使得多选框全选和反选功能得以顺畅运行。在实际开发中,开发者需要持续关注浏览器的更新和兼容性指南,以确保...

    ie和firefox不兼容的解决方法集合

    在网页设计过程中,由于不同的浏览器对HTML、CSS和JavaScript的解析和执行方式存在差异,因此开发者经常遇到浏览器兼容性问题,尤其是Internet Explorer(IE)与Firefox之间的不兼容性。以下是一些解决这两种浏览器...

    js窗口关闭提示信息(兼容IE和firefox)

    很多时候,在浏览网页时,我们需要考虑用户不小心时关闭窗口的情况,特别是当用户有很重要的数据还没有保存,我们的...这样当用户按了关闭按钮时,便会弹出如下这个窗口(这个是兼容IE和firefox的): 其中”Hello

    textarea在文本之后获得焦点,适合ie,火狐,谷歌

    本文将详细讲解如何使`textarea`在用户填写完文本后自动获取焦点,这一功能对于提高用户体验非常关键,特别是考虑到它在不同浏览器(如IE、Firefox和Chrome)中的兼容性。 首先,我们要明白`textarea`的基本结构。...

    .net,js捕捉文本框回车键事件的小例子(兼容多浏览器).docx

    在Internet Explorer(IE)中,键盘事件是通过`window.event`对象来访问的,而Netscape、Firefox、Chrome等现代浏览器则使用`event`参数来传递事件对象。因此,为了兼容多种浏览器,我们需要根据事件对象是否存在来...

    jQuery一步一步实现跨浏览器的可编辑表格,支持IE、Firefox、Safari、Chrome、Opera

    本篇文章将详细介绍如何利用jQuery实现这一功能,支持包括IE、Firefox、Safari、Chrome和Opera在内的主流浏览器。 首先,我们需要创建一个基本的HTML表格结构,如Code1所示,包含表头(thead)和数据区域(tbody)...

    Js event事件在IE、FF兼容性问题

    在不同的浏览器中,特别是早期的Internet Explorer (IE) 和Firefox (FF),事件处理的实现存在一些兼容性问题。本文将深入探讨这些差异,并提供解决这些问题的策略。 首先,我们来看`window.event`这个属性。在IE...

    jQuery图片折叠轮换代码,可以点击左右箭头按钮切换图片,漂亮简洁。兼容主流浏览器

    5. **浏览器兼容性**:jQuery的一个重要优势是它对多种浏览器的良好兼容性,包括IE6+、Firefox、Chrome、Safari和Opera等。通过使用jQuery,开发者无需关注底层浏览器差异,简化了代码。 6. **代码结构与模块化**:...

    火狐和ie下获取javascript 获取event的方法(推荐)

    本文主要讨论如何在Firefox和Internet Explorer(IE)这两个不同浏览器环境下获取`event`对象。 首先,让我们通过一个简单的例子来理解`event`的获取。考虑一个HTML按钮元素,它通过`onclick`属性触发`myFunc()`...

Global site tag (gtag.js) - Google Analytics