crossbrowser.js
上传用户:kimgenplus
上传日期:2016-06-05
资源大小:20877k
文件大小:5k
源码类别:

OA系统

开发平台:

Java

  1. // ---------------------------------------------------------------------------
  2. // this script is copyright (c) 2001 by Michael Wallner!
  3. // http://www.wallner-software.com
  4. // mailto:dhtml@wallner-software.com
  5. //
  6. // you may use this script on web pages of your own
  7. // you must not remove this copyright note!
  8. //
  9. // This script featured on Dynamic Drive (http://www.dynamicdrive.com)
  10. // Visit http://www.dynamicdrive.com for full source to this script and more
  11. // ---------------------------------------------------------------------------
  12. // ---------------------------------------------------------------------------
  13. //                 crossbrowser DHTML functions version 1.0
  14. //
  15. // supported browsers:  IE4, IE5, NS4, NS6, MOZ, OP5
  16. // ---------------------------------------------------------------------------
  17. //get browser info
  18. //ermittle den verwendeten Browser
  19. //Unterst黷zt IE4, IE5, IE6?, NS4, NS6, Mozilla5 und Opera5
  20. //(Achtung op5 kann sich auch als NS oder IE ausgeben!)
  21. function browserType() {
  22.   this.name = navigator.appName;
  23.   this.version = navigator.appVersion;         //Version string
  24.   this.dom=document.getElementById?1:0                 //w3-dom
  25.   this.op5=(this.name.indexOf("Opera") > -1 && (this.dom))?1:0  //Opera Browser
  26.   this.ie4=(document.all && !this.dom)?1:0            //ie4
  27.   this.ie5=(this.dom && this.version.indexOf("MSIE ") > -1)?1:0      //IE5, IE6?
  28.   this.ns4=(document.layers && !this.dom)?1:0            //NS4
  29.   this.ns5=(this.dom && this.version.indexOf("MSIE ") == -1)?1:0 //NS6, Mozilla5
  30.   //test if op5 telling "i'm ie..." (works because op5 doesn't support clip)
  31.   //testen ob sich ein op5 als ie5 'ausgibt' (funktioniert weil op5 kein clip
  32.   //unterst黷zt)
  33.   if (this.ie4 || this.ie5) {
  34.     document.write('<DIV id=testOpera style="position:absolute; visibility:hidden">TestIfOpera5</DIV>');
  35.     if (document.all['testOpera'].style.clip=='rect()') {
  36.       this.ie4=0;
  37.       this.ie5=0;
  38.       this.op5=1;
  39.     }
  40.   }
  41.   this.ok=(this.ie4 || this.ie5 || this.ns4 || this.ns5 || this.op5) //any DHTML
  42.   eval ("bt=this");
  43. }
  44. browserType();
  45. //crossbrowser replacement for getElementById (find ns4 sublayers also!)
  46. //ersetzte 'getElementById' (findet auch sublayers in ns4)
  47. function getObj(obj){
  48. //do not use 'STYLE=' attribut in <DIV> tags for NS4!
  49. //zumindest beim NS 4.08 d黵fen <DIV> Tags keine 'STYLE=' Angabe beinhalten
  50. //sonst werden die restlichen Layers nicht gefunden! class= ist jedoch erlaubt!
  51.   //search layer for ns4
  52.   //Recursive Suche nach Layer f黵 NS4
  53.   function getRefNS4(doc,obj){
  54.     var fobj=0;
  55.     var c=0
  56.       while (c < doc.layers.length) {
  57.         if (doc.layers[c].name==obj) return doc.layers[c];
  58. fobj=getRefNS4(doc.layers[c].document,obj)
  59. if (fobj != 0) return fobj
  60. c++;
  61.       }
  62.       return 0;
  63.   }
  64.   return (bt.dom)?document.getElementById(obj):(bt.ie4)?
  65.          document.all[obj]:(bt.ns4)?getRefNS4(document,obj):0
  66. }
  67. //get the actual browser window size
  68. //ermittle die gr鲞e der Browser Anzeigefl鋍he
  69. //op5 supports offsetXXXX ans innerXXXX but offsetXXXX only after pageload!
  70. //op5 unterst黷zt sowohl innerXXXX als auch offsetXXXX aber offsetXXXX erst
  71. //nach dem vollst鋘digen Laden der Seite!
  72. function createPageSize(){
  73.   this.width=(bt.ns4 || bt.ns5 || bt.op5)?innerWidth:document.body.offsetWidth;
  74.   this.height=(bt.ns4 || bt.ns5 || bt.op5)?innerHeight:document.body.offsetHeight;
  75.   return this;
  76. }
  77. var screenSize = new createPageSize();
  78. //create a crossbrowser layer object
  79. function createLayerObject(name) {
  80.   this.name=name;
  81.   this.obj=getObj(name);
  82.   this.css=(bt.ns4)?obj:obj.style;
  83.   this.x=parseInt(this.css.left);
  84.   this.y=parseInt(this.css.top);
  85.   this.show=b_show;
  86.   this.hide=b_hide;
  87.   this.moveTo=b_moveTo;
  88.   this.moveBy=b_moveBy;
  89.   this.writeText=b_writeText;
  90.   return this;
  91. }
  92.   
  93. //crossbrowser show
  94. function b_show(){
  95. //  this.visibility='visible'
  96.   this.css.visibility='visible';
  97. }
  98. //crossbrowser hide
  99. function b_hide(){
  100. //  this.visibility='hidden'
  101.   this.css.visibility='hidden';
  102. }
  103. //crossbrowser move absolute
  104. function b_moveTo(x,y){
  105.   this.x = x;
  106.   this.y = y;
  107.   this.css.left=x;
  108.   this.css.top=y;
  109. }
  110. //crossbrowser move relative
  111. function b_moveBy(x,y){
  112.   this.moveTo(this.x+x, this.y+y)
  113. }
  114. //write text into a layer (not supported by Opera 5!)
  115. //this function is not w3c-dom compatible but ns6
  116. //support innerHTML also!
  117. //Opera 5 does not support change of layer content!!
  118. function b_writeText(text) {
  119.    if (bt.ns4) {
  120.      this.obj.document.write(text);
  121.      this.obj.document.close();
  122.    }
  123.    else {
  124.      this.obj.innerHTML=text;
  125.    }
  126. }