写了两个例子:
1. 对于通过ID取对象
function getObjectById(id)
{
if (typeof(id) != "string" || id == "") return null;
if (document.all) return document.all(id);
if (document.getElementById) return document.getElementById(id);
try {return eval(id);} catch(e){ return null;}
}2. 对事件附加处理函数
if(document.attachEvent)
window.attachEvent("onresize", function(){reinsert();});
else
window.addEventListener('resize', function(){reinsert();}, false);
注意在IE里是 onclick 而在firefox NS 里则是 click !
1. 对于通过ID取对象
function getObjectById(id)
{
if (typeof(id) != "string" || id == "") return null;
if (document.all) return document.all(id);
if (document.getElementById) return document.getElementById(id);
try {return eval(id);} catch(e){ return null;}
}2. 对事件附加处理函数
if(document.attachEvent)
window.attachEvent("onresize", function(){reinsert();});
else
window.addEventListener('resize', function(){reinsert();}, false);
注意在IE里是 onclick 而在firefox NS 里则是 click !
document.formName.action = "...";
document.formName.submit();好像在mozilla下不能用
在mozilla下怎么动态更改Css文件?
ie下可以这么做:window.document.styleSheets[0].href = "css文件";
remove link object and create a new one
给link设定id,
<link id="pagestyle" rel="stylesheet" rev="stylesheet" type="text/css" media="screen" href="template/gray/xmas.css" charset="UTF-8" />
然后通过脚本来设置
<script language="JavaScript" type="text/JavaScript">
function setStyle(h)
{
var s = document.getElementById("pagestyle");
s.href = h;
return false;
}
</script>
引用
<a href="#" onclick="javascript:setStyle('template/gray/gq.css');return false;">国庆样式</a>
<a href="#" onclick="javascript:setStyle('template/gray/xmas.css');return false;">圣诞样式</a>
{}FCKXml.prototype.GetHttpRequest = function()
{
if ( window.XMLHttpRequest ) // Gecko
return new XMLHttpRequest() ;
else if ( window.ActiveXObject ) // IE
return new ActiveXObject("MsXml2.XmlHttp") ;
}FCKXml.prototype.LoadUrl = function( urlToCall, asyncFunctionPointer )
{
var oFCKXml = this ; var bAsync = ( typeof(asyncFunctionPointer) == 'function' ) ; var oXmlHttp = this.GetHttpRequest() ; oXmlHttp.open( "GET", urlToCall, bAsync ) ;
if ( bAsync )
{
oXmlHttp.onreadystatechange = function()
{
if ( oXmlHttp.readyState == 4 )
{
oFCKXml.DOMDocument = oXmlHttp.responseXML ;
asyncFunctionPointer( oFCKXml ) ;
}
}
}
oXmlHttp.send( null ) ;
if ( ! bAsync && oXmlHttp.status && oXmlHttp.status == 200 )
this.DOMDocument = oXmlHttp.responseXML ;
else
throw( 'Error loading "' + urlToCall + '"' ) ;
}FCKXml.prototype.SelectNodes = function( xpath, contextNode )
{
if ( document.all ) // IE
{
if ( contextNode )
return contextNode.selectNodes( xpath ) ;
else
return this.DOMDocument.selectNodes( xpath ) ;
}
else // Gecko
{
var aNodeArray = new Array(); var xPathResult = this.DOMDocument.evaluate( xpath, contextNode ? contextNode : this.DOMDocument,
this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), XPathResult.ORDERED_NODE_ITERATOR_TYPE, null) ;
if ( xPathResult )
{
var oNode = xPathResult.iterateNext() ;
while( oNode )
{
aNodeArray[aNodeArray.length] = oNode ;
oNode = xPathResult.iterateNext();
}
}
return aNodeArray ;
}
}FCKXml.prototype.SelectSingleNode = function( xpath, contextNode )
{
if ( document.all ) // IE
{
if ( contextNode )
return contextNode.selectSingleNode( xpath ) ;
else
return this.DOMDocument.selectSingleNode( xpath ) ;
}
else // Gecko
{
var xPathResult = this.DOMDocument.evaluate( xpath, contextNode ? contextNode : this.DOMDocument,
this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), 9, null); if ( xPathResult && xPathResult.singleNodeValue )
return xPathResult.singleNodeValue ;
else
return null ;
}
}
http://fason.nease.net/script/emu.js
var p = obj.parentNode;
p.removeChild(obj);9.select 的option增加和删除看看,不用add和remove
http://fason.nease.net/samples/js/moveoptions.html10.mozilla中处理右键问题,dom2已经支持oncontextmenu,不用e.which == 2来判断
11.ie下的opacity,mozilla怎么处理??答:
obj.style.MozOpacity = 0.5;// .opacity-css { -moz-opacity:0.5 }
if(ie){
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = "false";
xmlDoc.loadXML(xmlText);
}
else{ //mozilla
var parser = new DOMParser();
var xmldoc = parser.parseFromString(xmlText,"text/xml");
}
Browsers Grabber Hits Percent
MS Internet Explorer No 48355105 99.8 %
Unknown ? 30533 0 %
FireFox No 11401 0 %
Mozilla No 4813 0 %
Opera No 3048 0 %
Safari No 1558 0 %
Netscape No 1265 0 %
Konqueror No 132 0 %
Phoenix No 6 0 %
K-Meleon No 3 0 %
Others 2 0 %
在ie下改变script的src可以直接obj.src="XXX.js",mozilla不行,要remove掉再create一个才能生效.13.ie下的obj.currentStyle.xxx,mozilla下用
document.defaultView.getComputedStyle(obj, '').getPropertyValue("xxx")
在这呢http://www.mozilla.org/docs/web-developer/,回头好好看看,呵呵
(
"outerHTML",
function()
{
var str = "<" + this.tagName;
for (var i=0; i<this.attributes.length; i++)
{
var attr = this.attributes[i]; str += " ";
str += attr.nodeName + "=" + '"' + attr.nodeValue + '"';
}
str += ">" + this.innerHTML + "</" + this.tagName + ">";
return str;
}
); HTMLElement.prototype.__defineSetter__
(
"innerText",
function (anything)
{
this.innerHTML = ""; var sText = String(anything);
var textS = sText.split("\n");
for(var i=0; i<textS.length; i++)
{
var txtNode = null;
var retNode = null; if(textS[i].length)
txtNode = document.createTextNode(textS[i]); if(i<textS.length-1)
retNode = document.createElement("BR"); if(txtNode)
this.appendChild(txtNode); if(retNode)
this.appendChild(retNode);
}
}
); HTMLElement.prototype.__defineGetter__
(
"innerText",
function ()
{
var anyString = ""; var childS = this.childNodes;
for(var i=0; i<childS.length; i++)
{
if(childS[i].nodeType==1)
anyString += childS[i].tagName=="BR" ? '\n' : childS[i].innerText;
else if(childS[i].nodeType==3)
anyString += childS[i].nodeValue;
} return anyString;
}
); HTMLElement.prototype.__defineGetter__
(
"text",
function ()
{
return this.innerText;
}
);
我最近也开始做mozilla/opera的开发。
有新的idea就帖到这里来吧。mozilla 不支持 element.customAttribute 的。
一定要用 setAttribute("customAttribute",value) , getAttribute("customAttribute")
(这个是最麻烦的地方)我自己是写了这个全局函数来添加删除事件的:function AttachDomEvent(obj,name,func)
{
if(obj.attachEvent)
obj.attachEvent("on"+name,func);
if(obj.addEventListener)
obj.addEventListener(name,func,true);
}
function DetachDomEvent(obj,name,func)
{
if(obj.detachEvent)
obj.detachEvent("on"+name,func);
if(obj.removeEventListener)
obj.removeEventListener(name,func,true);
}例如
AttachDomEvent(window,"click",handle_click);
有时候mozilla不认某写元素的id,如果你不想用getElementById,那么可以在</BODY>后加这一段代码:
if(document.addEventListener)
{
var tagcoll=document.getElementsByTagName("*");
for(var i=0;i<tagcoll.length;i++)
{
if(tagcoll[i].id)
{
eval("var "+tagcoll[i].id+"=document.getElementById('"+tagcoll[i].id+"')");
}
}
}
不过这段代码与 iframe/frame 的有冲突的地方。我平时用到的比较常见的问题是
table.insertRow(-1);
row.insertCell(-1);
在opera中,window.addEventListener >> document.addEventListenerframe/iframe区别的访问方式其实是一样的,要用标准的方法,window.frames[frameName].document
12.<script src=XX.js></script>
在ie下改变script的src可以直接obj.src="XXX.js",mozilla不行,要remove掉再create一个才能生效.没搞懂,具体该怎么写呀???