日期:2014-05-16  浏览次数:20431 次

js IE 和火狐用法区别

禁止选择
????unselectable="on"(off): IE/Opera
????style="-moz-user-select:none": FireFox(JS:element.style.MozUserSelect = "none";)
????style="-khtml-user-select:none": Safari(JS:element.style.KhtmlUserSelect)
????onselectstart="return false": IE

取消选择
????if(document.selection && document.selection.clear) document.selection.clear(); // IE
????else if(window.getSelection && window.getSelection().removeAllRanges) window.getSelection().removeAllRanges(); // FireFox/Opera/Safari

当前焦点是哪个控件
????document.activeElement // IE, FF3.0+

获取样式的实际属性值
????IE: 对象.currentStyle.需要访问的属性
????W3C: window.getComputedStyle("对象",null).需要访问的属性(第2个参数为伪元素,如:hover,:first-letter,:before等,是必须的)
????function getStyle(element, style){
????????var strValue = "";
????????if(document.defaultView && document.defaultView.getComputedStyle){
????????????strValue = document.defaultView.getComputedStyle(element, "").getPropertyValue(strCssRule);
????????}
????????else if(element.currentStyle){
????????????strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
????????????????return p1.toUpperCase();
????????????});
????????????strValue = element.currentStyle[strCssRule];
????????}
????????return strValue;
????}
????// 假设someElement是DOM中某对象的引用,那么通过以下方法可以获得该对象下的字体大小:
????// var fontSize = getStyle(someElement, "font-size");
????// 注意, 对于缩略式表达式, FF无法获取! 例如“padding:4px”, 在FF下面, 只能按照标准返回"padding-left"

Array对象
????var array = new Array(); // new Array(20); // 声明一个Array对象,并对数组进行初始化,设置数组的大小为20
????var array = new Array("red","yellow","blue"); // 或 ["red","yellow","blue"]; // 声明一个数组,并通过参数给数组设置初始值
????array.length; // 3
????array.toString(); // 以,串连数组各项: red,yellow,blue
????array.join("-"); // 以参数串连数组各项: red-yellow-blue
????array.push("black"); // 在数组的尾部添加一个新项: ["red","yellow","blue","black"]
????array.pop(); // 将数组尾部的一个项删除掉: ["red","yellow","blue"]
????array.shift(); // 将数组头部的一个项删除掉: ["yellow","blue"]
????array.splice(start, num); // 将数组中从start开始num项从数组中删除掉
????array.splice(start, num, "xx"); // 将数组中从start开始的num项删除掉,第三个参数开始是要插入到数组中去的新项,将会从start位置开始插入。如果num为0则不删除任何数组项
????array.reverse(); // 将数组顺序反过来
????array.sort(); // 数组排序

IE不支持动态修改单选框的名称的解决方法
????document.createInput = function(name) {
????????// IE doesn’t allow the name attribute to be changed after the element is created
????????// http://www.iteye.com/topic/26917? |? http://alt-tag.com/blog/archives/2006/02/ie-dom-bugs/
????????var element = null;
????????try {
????????????element = document.createElement("<input type=\""+type+"\" name=\""+name+"\">"); // IE下的创建方式
????????} catch (e) { // 标准浏览器下会报错, 应采用以下的创建方式
????????????element = document.createElement("input");
????????????element.type = type;
????????????element.name = name;
????????}
????????return element;
????}

Form提交到新开窗口
????// IE8下似乎有些问题, 会打开一个空窗口, 提交时再打开一个新窗口
????form.action="...";
????form.target="xxx";
????window.open("about:blank","xxx","width=100,height=100,top=100,left=100");
????form.submit();

区分中英文判断长度
????function calculateCount(str) {
????????var count=0;
????????for (var i = 0; i < str.length; i++) {
????????????var c = str.charAt(i);
????????????if ((c >= "!") && (c <= "\u20AC")||(c==" ") )
????????????????count += 1;
????????????else
????????????????count += 2;
????????}
????????return count;
????}
遍历输出属性
????<div id="message" style="position:absolute;border:1px solid #CCCCCC;z-index:1;background-color:#FFFFE1;" />
????<script language="JavaScript">
????????var message = doc