JAvascriptとcss互換性のまとめ


XHTML HTML     
1.XHTML              。
2 XHTML              。
<html>
  <head> ... </head>
  <body> ... </body>
  </html> 
3             。
   XHTML   XML    , XML         
4     XHTML        ,               />   。
5 XHTML         :          。 :
     :
  <dl compact="compact">
  <input checked="checked" />
  <input readonly="readonly" />
  <input disabled="disabled" />
  <option selected="selected" />
1.div        

     vertical-align:middle;          DIV    line-height:200px;       ,      。              
1. getYear()  
var year= new Date().getYear();
document.write(year);//ie = 2011" ff chrome=111,   ff   getYear      "    -1900"   。

【    】   getFullYear getUTCFullYear    : 
var year = new Date().getFullYear();document.write(year); //2011

         float     :

var test = document.getElementById("test");
test.style.float="right";//chrome
test.style.styleFloat="right";//IE
test.style.cssFloat = "right";//FF


word-break:break-all;//div    div  ,        。
word-wrap:break-word; //             。
min-width: 80px;
min-height: 35px;
max-width:400px;
margin-left:auto;margin-right:auto; // IE       ,IE    text-algin:center;

overflow:auto;				//       

cursor: pointer       IE FF         , hand   IE   

                hover active ,             ,       CSS       : L-V-H-A Code: <style type="text/css"> 

   a:link {color:blue;} a:hover {color:yellow;} a:active {color:red;}  a:visited {color:green;}


{margin:0;padding:0;}            ,     0         

div{margin:30px!important;margin:28px;}     FF,   FF       ,  !important,      margin         , important    IE    ,

Object.style.background=
	background-color:color/blue,#FFFFF;
	background-image:url(images/a.jif);
background-repeat:’no-repeat/repeat-x/repeat-y/repeat; 
background-attachment: scroll/fixed;
background-position: (top,left)/(23px,34px)/(12%,30%)

width:auto !important;width:100px;height:auto;max-width:400px;
 IE     width=auto,  IE   ,    import,  max-width  IE    。

  :
IE:filter:alpha(opacity=30,style=1)"> 
opacity=30      30%,style     1 2 3 4
	IE  데    :
<div style="filter:progid:DXImageTransform.Microsoft.Gradient(startColorStr='#FFFFFF', endColorStr='#3568CC', gradientType='0');
widht:100px; height:100px;"></div>

FF:	opacity: .1      10%(    0.1)

      :var e = e||window.event;
Event.x      :var x = event.clinetX; 	IE and FF     
  clientX event.x   데  ,
     :Var x = event.x?event.x:event.pageX;


       :(       dom tagName)
var event = e ||window.event;
	var srcDom = event.srcElement || event.target
	alert(srcDom.tagName)

window.open()   and  
channelmode=yes|no|1|0	            。    no。
directories=yes|no|1|0	        。    yes。
fullscreen=yes|no|1|0	             。    no。                   。
height=pixels	          。    。
left=pixels	    x   。    。
location=yes|no|1|0	        。    yes。
menubar=yes|no|1|0	       。    yes。
resizable=yes|no|1|0	         。    yes。
scrollbars=yes|no|1|0	       。    yes。
status=yes|no|1|0	       。    yes。
titlebar=yes|no|1|0	       。    yes。
toolbar=yes|no|1|0	           。    yes。
top=pixels	    y   。
width=pixels	           。    。

  :      ,   ,           demo:
window.open("a.htm","_blank","toolbar=yes, location=yes, directories=no, status=no, menubar=yes, scrollbars=yes, resizable=no, copyhistory=yes, width=400, height=400")

FF  : -moz-border-radius:4px,

Date   getDate()      :var y  =now.getFullYear();
	FF  chrome   getYear      "    -1900"   。

 DOM          setAttribute  。

  DOM     
IE FF   object.className,       :
var myObject = document.getElementById("header");
myObject.className="classValue"



           :
<input id="txt"  onkeydown="dotest(event)">
function dotest(e){
	var event = e||window.event;
	var code = e.which || e.keyCode;
	alert(code)
}
  :   dotest         event  ,  ,        event
  :<input id="txt"  onkeydown="dotest(event)"> 
  <input id="txt"  onkeydown="dotest(e)">    
  :    alt ctrl shift 
altKey,ctrlKey,shiftKey:    ,               ,       Alt、Ctrl  Shift ,         。



          :
var divDom = document.getElementById("box");
		//divDom.onclick = function(){alert('aaaaaaaa')}
//         ,    onclick        onclick  。
	if(divDom.attachEvent){
		divDom.attachEvent("onclick",function(){
//     IE     :IE      on
			alert("IE")
		})
	}else{
		divDom.addEventListener("click",function(){
//FF chrome    ,  :FF      on
			alert("FF")
		},false)  	//       ,          ???
	}
            :detachEvent  removeEventListener
   ,             ????????


childNodes IE FF    :

<ul id="main"> <li>1</li> <li>2</li> <li>3</li></ul> <input type=button value="click me!" 
onclick="alert(document.getElementById('main').childNodes.length)">

IE   3,  FF Chrome  6,(     #text  )

    select options      :
sel.options.length = 0; // options     0    。

   :       alt  ,alt:        load      。
  FF    ,          alt     ,IE            ,        , chrome        ;

FF      :
     ,FF         ,         src,          :
<img onclick= "this.src='a.gif?'+Math.random()" src="b.gif" alt="    "/>
   ,FF             (       ),     ?           ,      ,       。

                    :(  tagName  )
Html  :
<input id="txt" 
onmouseover="goin(event)"  onmouseout="goout(event)">
<span>aaaaaaaaaaaaaaaaa</span>

JS  :
function goin(e){
	var event = e||window.event;
	var src = event.target || event.srcElement;
	if(event.fromElement){
		alert("IE from "+event.fromElement.tagName);
	}else{
		alert("FF from "+event.relatedTarget.tagName);
	}
}

function goout(e){
	var event = e||window.event;
	var src = event.target || event.srcElement;
	if(event.fromElement){
		alert("IE TO "+event.toElement.tagName);
	}else{
		alert("FF to "+event.relatedTarget.tagName);
	}
}


( )IE Event          
   IE               Event,            ,          ,            ,           。
  type:     ,  HTML     ,  “on”        ,  “Click”       。
  srcElement:   ,         。
  button:          ,     。1      ,2      ,4        ,          ,         ,  3          。
  clientX/clientY:         ,    、   ,      ,                   。
  offsetX/offsetY:             ,      Image       。
  altKey,ctrlKey,shiftKey:    ,               ,       Alt、Ctrl  Shift ,         。
  keyCode:  keydown keyup       ,       keypress   Unicode  。
  fromElement、toElement     mouseover          ,    mouseout             。
  cancelBubble:      ,     true   ,                  。
  returnValue:       ,   false                   ,   <a href=”#” onclick=”ProcessMethod();return false;” />。
  attachEvent() detachEvent()  :   DOM                   ,       ,        ,          。 attachEvent()       ,this       window  ,            。

  :12. body   
    body body                 , IE    body          

    :
 <script>     defer  (        ),            <script>                。

	<script type="text/javascript" defer="defer" src="example1.js"></script> 

Noscript   :
       <noscript>    。            ,       <noscript>    。
 <body> 
    <noscript> 
      <p>          (  )JavaScript。  
    </noscript> 
  </body> 





   :

 2.IE      :IE                   ,    ,   DOM           ,                           ,               。  ,<div>     <a>,         onclick       ,            <a>   onclick      ,   <div>       。    <a>             ,        <div> onclick        ,    cancelBubble   false  

<div onclick="alert('div')">
<a href="#" onclick="alert('A');event.cancelBubble=true;">abc</a>
</div>

        A,    div,  

3.  DOM    Event
   IE    ,W3C DOM  Event     window         ,    ,event      。   DOM     ,event              。Event       ,   UIEvent MutationEvent,         Event        , MouseEvent    UIEvent    ,     UIEvent Event        。  ,     Event、UIEvent MouseEvent        。
  1.Event
    type:    , IE  ,    “on”  ,        “click”。
    target:       。
    currentTarget:              ,   Target        ,           ,  Target        。
    eventPhase:          。     。
    timeStamp:       。
    bubbles:         。
    cancelable:          preventDefault()          。
    preventDefault()  :         ;
    stopPropagation()  :      。
  2.UIEvent
    view:     window  。
    detail:         ,      、mousedown mouseup           。
  3.MouseEvent
   button:    ,   mousedown、mouseup      ,      , IE  button    ,            ,0    ,1     ,2    。
   altKey、ctrlKey、shiftKey、metaKey: IE  ,  IE      。
   clientX、clientY: IE     ,   DOM   ,                 ,    ,         ,            ,clientX clientY  0,   IE ,                     ,   document.body.scrollLeft document.body.scrollTop。
   screenX、screenY:                ,          ,        。
   relatedTarget: IE  fromElement、toElement  ,    mouseover mouseout    ,          。
( )             DOM     
    ,       DOM   IE    ,        IE Mozilla Firefox             ?    :
function beginDrag(elementToDrag,event)
{
  var deltaX=event.clientX-parseInt(elementToDrag.style.left);
  var deltaY=event.clientY-parseInt(elementToDrag.style.top);
  
if(document.addEventListener) 
{
  document.addEventListener("mousemove",moveHandler,true);
  document.addEventListener("mouseup",upHandler,true);
}
else if(document.attachEvent)
{
  document.attachEvent("onmousemove",moveHandler);
  document.attachEvent("onmouseup",upHandler);
  
}
  
  if(event.stopPropagation)   event.stopPropagation();
  else event.cancelBubble=true;
  if(event.preventDefault)  event.preventDefault();
  else event.returnValue=false;
  
  function moveHandler(e)  
  {
  if (!e) e=window.event; //   IE     ,    window.event
  //    ,    DOM     Event  。
    elementToDrag.style.left=(event.clientX-deltaX)+"px";
    elementToDrag.style.top=(event.clientY-deltaY)+"px";
    
     if(event.stopPropagation)   event.stopPropagation();
    else event.cancelBubble=true;
    
  }
  
  function upHandler(e)
  {
       if(document.removeEventListener)
    {
      document.removeEventListener("mouseup",upHandler,true);
      document.removeEventListener("mousemove",moveHandler,true);}
      else
    {
      document.detachEvent("onmouseup",upHandler);
      document.detachEvent("onmousemove",moveHandler);}
    }
      if(event.stopPropagation)   event.stopPropagation();
    else event.cancelBubble=true;
    
  }



  3

                   :
	var WHGeter={
		getWidth : function(){
			return document.body.clientWidth;

		},
		getHeight : function(){
			return document.body.clientHeight;
		}
	};

var srcDom = e.target || e.srcElement;
alert(srcDom.tagName)

          :
Var paent = aDom.parentNode; //parentElement     ,chrome  

          :  
Document.body.onload = function(){doLoad();} (     )
  :Document.body.onload = doLoad();(     )
     :Document.body.onload = doLoad;  FF Chrome   

              :FF  css  ,IE  JS
<div style="-moz-user-select:none;"
 onselectstart="return false;">aaaaaaaaaaaaaaaaaaaaa</div>


FF       :-moz-border-radius:4px;border:1px solid red;
  body          (    )style="overflow:hidden;"
  IE  scroll="no",FF Chrome    。

         
var dom = getDom("mydiv");
		var node =  document.createTextNode("Hello world");
		dom.insertBefore(node,getDom("mytxt"));//             (mytxt)   
		//dom.appendChild(node);//           。replaceChild

JS  CSS       :
    DOM   style         ,  css     JS      。
div{color:red;	}<div style=" height:100px;"></div>
  ,JS     height,var h = div.style.height;// h = 100
  color   。Var color = div.style.color;// color = “”( )

DOM     cloneNode():
var dom = getDom("mytxt");
		var newDom= dom.cloneNode();
		getDom("mydiv").appendChild(newDom);
   dom            ,        ,        。  ,var newDom = dom   var newDom = dom.cloneNode()    ,           。   ,id  ,      setAttribute(“id” , “ another_id “);       ID。
JS  DOM  :removeChild
var dom = getDom("mytxt");
dom.parentNode.removeChild(dom);      parentNode    

   :
    DOM        :
<div style="border:1px solid red;height:3000px;" id="mydiv">
	aaaa<br/>
	<div>
		<input/>
		<img>
	</div>
	<input/>
</div>

var dom = getDom("mydiv");
dom.hasChildNodes();   dom.childNodes.length

     DIV  node      :

var dom = getDom("mydiv");
		var arr = dom.childNodes;
		var counter = 0;
		for(var i=0;i<arr.length;i++){
			if("#text"!==arr[i].nodeName){
				counter ++;
				JSLogger.log(arr[i].nodeName)
			}
		}
	JSLogger.log("counter = "+counter)
  :DOM                  , ,  ,        nodeName   #text,     nodeName    。


                  :(    데)
var dom = getDom("mydiv2");
		var next = dom.nextSibling; // previousSibling        
		while(next){
			if("#text"!==next.nodeName){
//     nodeName
				JSLogger.log(next. parentNode.nodeName)	;
			}
			next = next.nextSibling;
		}

    HTML         :

var dom = getDom("mydiv").cloneNode(true);//true      
var html = dom.innerHTML.replace(/</g,"&lt;").replace(/>/g,"&gt;");//  
JSLogger.log(dom);
 

  A        
<a href="#" hidefocus="true">       </a>
<a href="#">      </a>

  cloneNode      Tr
<table>
	<tbody id="mytbody">
		<tr>
			<td>111</td>
			<td><input type="button"value="add" onclick="add(this)"></td>
		</tr>
	</tbody>
</table>
<script>
	function add(tdObj){
		var tbody = document.getElementById("mytbody");
		//JSLogger.log(tdObj.parentElement.parentElement);// IE  
//     
		var newTr = tdObj.parentNode.parentNode.cloneNode(true);
		tdObj.parentNode.innerHTML="";
		mytbody.appendChild(newTr);
	
	}
</script


“===”(“!==”) JavaScript      (   )   ,                       ,                    。
              boolean   :(   )

 


      ,        

function iftrue(){
		JSLogger.log("iftrue")
		return true;
	}
	function iffalse(){
		JSLogger.log("iffalse");
		return false;
	}
	
	if(iftrue() && iffalse()){
		JSLogger.log("true");//iftrue,iffasle
	}
	if(iffalse() && iftrue()){
		JSLogger.log("true");//iffasle
	}

	if(iffalse() || iftrue()){
		JSLogger.log("true");//iffasle iftrue true
	}
	if(iftrue() || iffalse()){
		JSLogger.log("true");//iftrue true
	}
	//  :&&   ,    false,        
	//		||   ,    true,        
	// | and &          。

Callee caller   

function fool1(v1,v2){
		JSLogger.log("fool1");
		fool2(v1);
	}
	function fool2(v1){
		JSLogger.log("fool2");
		fool3();
	}

	function fool3(){
		var foo = arguments.callee;
		while(foo && (foo!=window)){//        
			JSLogger.log("    :");
			var args = foo.arguments;
			for(var i=0;i<args.length;i++){
				JSLogger.log("args["+i+"] = "+args[i]);
			}
			foo = foo.caller;
		}

	}
	fool1(1,2,3,4);
    :
fool1
fool2
    :
    :
args[0] = 1
    :
args[0] = 1
args[1] = 2
args[2] = 3	
args[3] = 4


  :
function fool1(){
		JSLogger.log("fool1 ");
		JSLogger.log(arguments[0]);
		fool2();
	}
	function fool2(){
		JSLogger.log("fool2 ");
		var	caller = arguments.callee.caller;
		JSLogger.log(caller.arguments[0]);
	}

	fool1("Tom");
    :
fool1 
Tom
fool2 
Tom

Call   apply   

function User(name){
		this.Name = name;
	}

	function test(){
		if(this==window){
			JSLogger.log("window   ");
		}else{
			JSLogger.log("this.Name = "+this.Name);
		}
	}
	test();//window   
	var u1 = new User("Tom");
	var u2 = new User("Jack");
	
	test.call(u1);// this.Name = Tom
	test.apply(u2);// this.Name = Jack



<script language="javascript" defer="defer">
	alert("up");//defer:  。                        。
	//  up   ,     defer,       ,                   alert("up")
	//  ,         down,    up
</script>
<script type="text/javascript">
//  XHTML   
//<![CDATA[  
	alert("down")
//]]>
//        XHTML           ,     CData      JavaScript  。 XHTML(XML) ,CData              ,                        。  , CData             --          ,          。
//   XHTML     ,          。    ,          XHTML,     CData   。    ?   JavaScript   CData         :
</script>
	var temp =[]
	function test(){
		var arr = ["a","b","c"]
		for(var i=0;i<arr.length;i++){
			var o={};
			var v = arr[i];
			o.say =  function(str){
				return function(){
					JSLogger.log(str)
				}
			}(v);

			temp.push(o);
		}
	}
	
	test();
	temp[0].say();

	var v ="BBB";//    

	(function (v){
		v ="AAAA";//       
		alert(v);//AAAA
	})(v);
	alert(v);//BBBB