Hi,
This looked interesting, so I wanted to put up an example of it, but I seem
to be missing something like:
DynObject.prototype.toLoadLayer= function() {blah}
Maybe you put that in dynapi.js?

Also I think a typo on line 179,
document..frames (two dots)

Feel free to attach the files in a zip if that's easier.
(.js attachments are moderated)

Cheers,
Richard Bennett

[EMAIL PROTECTED]
www.richardinfo.com
(Everything running on, and ported to DynAPI2.51)
visit the DynAPI homepage (and FAQ) ::
http://dynapi.sourceforge.net/dynapi/index.php?menu=1
Browse (and search) the mailinglist here:
http://www.mail-archive.com/index.php3?hunt=dynapi



----- Original Message -----
From: "Gabriel Suchowolski / power[z]one | onez.com" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, April 30, 2001 10:39 PM
Subject: [Dynapi-Help] I made a new version of loadpanel that I called
loadlayer...


> Hi everyone
>
> I made a new version of loadpanel that I called loadlayer... the best is
> that you can add load functions to all DynLayers if you like.... but the
> better is that this toloadlayer make the load functions in a layer to
> simulate that work as a frame or iframe, so all links load html files
inside
> the layer if target==self...
>
> Next is the toloadlayer.js, a test.html and two text1.html and text2.html
> tor the test.
>
> I test it on a window platform with  NS4.7, IE55 and Mozilla ( do not have
> more browsers xD )
>
> Enjoy
> www.microbians.com
> [EMAIL PROTECTED]
>
> toloadlayer.js
> -----------------------------------------------------
>
> /*
>    DynAPI Distribution
>    LoadPanel Widget
>
>    The DynAPI Distribution is distributed under the terms of the GNU LGPL
> license.
>
>    Requirements:
>  dynapi.api [dynlayer, dyndocument, browser, events]
> */
> function LoadPanel(url) {
>  this.DynLayer = DynLayer;
>  this.DynLayer();
>  this.autoH=true;
>  this.autoW=false;
>  this.isILayer=false;
>  this.isIFrame=!(is.ie5 && is.platform=='win32');
>  var l=new EventListener(this);
>  l.onresize=function(e) {
>   var o=e.getTarget();
>   if (!o.created || o.isReloading) return;
>   if (o.autoH && o.url) o.reload();
>  };
>  l.oncreate=function(e) {
>   var o=e.getTarget();
>   o.setURL(o.url);
>   if (!o.isReloading && o.tempURL) {
>    o.setURL(o.tempURL);
>    delete o.tempURL;
>   }
>  };
>  this.addEventListener(l);
>  this.tempURL=url;
>  return this;
> };
> LoadPanel.prototype=new DynLayer();
> LoadPanel.prototype.setAutoResizeWidth=function(b) {
>  this.autoW=b;
> };
> LoadPanel.prototype.setAutoResizeHeight=function(b) {
>  this.autoH=b;
> };
> LoadPanel.prototype.useILayer=function(b) {
>  if (is.ns4) {
>   this.isILayer=b;
>   if (this.created) this.reload();
>  }
> };
> LoadPanel.prototype.useIFrame=function(b) {
>  if (is.def) {
>   this.isIFrame=b;
>   if (this.created) this.reload();
>  }
> };
> LoadPanel.prototype.insertInlineElements=function() {
>  if (is.ie5) {
>   if (this.isIFrame) this.setHTML('<IFRAME ID="'+this.id+'loadElement"
> STYLE="visibility: hidden; display: none;"></IFRAME>',false);
>   else this.setHTML('<DIV ID="'+this.id+'loadElement"
> STYLE="behavior:url(#default#download)" style="display:
> none;"></DIV>',false);
>  }
>  else if (is.ns4 && this.isILayer)
this.setHTML('<ilayer></ilayer>',false);
>  else if (is.ns6) this.setHTML('<IFRAME ID="'+this.id+'loadElement"
> STYLE="visibility: hidden;"></IFRAME>',false);
>  else if (is.ie4) {
>   if (this.useBuffer) this.setHTML('<IFRAME ID="'+this.id+'loadElement"
> STYLE="visibility: hidden; display: none;"
> onLoad="LoadQueue.loadHandler()"></IFRAME>',false);
>   else this.setHTML('<IFRAME ID="'+this.id+'loadElement"
> WIDTH="'+this.getWidth()+'" HEIGHT="'+this.getHeight()+'"
STYLE="visibility:
> hidden; display: none;"
onLoad="LoadQueue.loadHandler()"></IFRAME>',false);
>  }
> };
> LoadPanel.prototype.findInlineElements=function() {
>  if (is.ie5) {
>   if (this.isIFrame)
> this.loadElement=document.frames(this.id+'loadElement');
>   else this.loadElement=document.all(this.id+'loadElement');
>  }
>  else if (is.ns4) {
>   if (this.isILayer) this.loadElement=this.doc.layers[0];
>   else this.loadElement=this.elm;
>  }
>  else if (is.ns6)
> this.loadElement=document.getElementById(this.id+'loadElement');
>  else if (is.ie4) {
>   if (this.isIFrame) this.loadElement=document.all[this.id+'loadElement'];
>   else this.loadElement=this.elm;
>  }
> };
> LoadPanel.prototype.getFileScope=function() {
>  if (!this.loadElement) return null;
>  return this.loadElement;
> };
> LoadPanel.prototype.clearFile=function() {
>  this.url=null
>  if (this.isILayer) {
>   this.loadElement.document.write('');
>   this.loadElement.document.close();
>  }
>  else this.reload();
> };
> LoadPanel.prototype.getURL=function() {
>  return this.url;
> };
> LoadPanel.prototype.setURL=function(url) {
>  if (!url) return;
>  if (!this.created) this.url=url;
>  else LoadPanel.queue.add(url,this);
> };
> LoadPanel.prototype.reload=function() {
>  this.isReloading=true;
>  var url=this.url;
>  var p=this.parent;
>  this.removeFromParent();
>  // CH: Had to add this code, so NS4 does not recycle the old loadElement.
>  if(is.ns4 && p.doc.recycled.length>0) {
>   delete p.doc.recycled[p.doc.recycled.length-1];
>   p.doc.recycled.length--;
>  }
>  this.html = '';
>  p.addChild(this);
>  this.isReloading=false;
> }
> LoadPanel.prototype.loadHandler=function(url) {
>  this.url=url;
>  if (is.ie5 && !this.isIFrame && this.elm && this.elm.all) {
>   var imgs = this.elm.all.tags("img");
>   for (var i=0;i<imgs.length;i++) {
>    if (imgs[i].readyState == 'uninitialized') imgs[i].src = imgs[i].src;
>   }
>  }
>  if (is.ns4 && this.isILayer) {
>   var w=this.loadElement.document.width;
>   var h=this.loadElement.document.height;
>  }
>  else {
>   var w=this.getContentWidth();
>   var h=this.getContentHeight();
>  }
>  if (this.autoW) this.setWidth(w,false);
>  if (this.autoH) this.setHeight(h,false);
>  this.isReloading=false;
>  this.invokeEvent('load');
> };
> function LoadQueue() {
>  this.queue=new Array();
>  this.index=0;
> };
> LoadQueue.prototype.toString=function() {
>  return "LoadPanel.queue";
> };
> LoadQueue.prototype.add=function(url,loadpanel) {
>  var q=this.queue.length;
>  this.queue[q]=[url,loadpanel];
>  this.loadNext();
> };
> LoadQueue.prototype.loadNext=function() {
>  if (!this.busy && this.queue[this.index]) {
>   this.busy=true;
>   var lpanel=this.currentLoadPanel=this.queue[this.index][1];
>   var url=this.currentURL=this.queue[this.index][0];
>   if (is.ns4) {
>    if (is.ILayer) lpanel.insertInlineElements();
>    lpanel.findInlineElements();
>    DynAPI.document.releaseMouseEvents();
>    var lyr=lpanel.elm;
>    while(lyr.parentLayer) lyr=lyr.parentLayer;
>    lyr.onload=LoadQueue.loadHandler;
>    lpanel.loadElement.onload=LoadQueue.loadHandler;
>    lpanel.loadElement.src=url;
>   } else {
>    if (!lpanel.loadElement) {
>     lpanel.insertInlineElements();
>     lpanel.findInlineElements();
>    }
>    if (is.ie5) {
>     if (lpanel.isIFrame) {
>      lpanel.loadElement.document.isLoading=true;
>      lpanel.loadElement.location=url;
>      lpanel.timerID=setInterval(this.toString() + '.loadTimer()',250);
>     }
>     else lpanel.loadElement.startDownload(url,LoadQueue.loadHandler);
>    }
>    else if (is.ie4) {
>     lpanel.timerID=setInterval("if
>
(document.frames['"+lpanel.id+"loadElement'].document.readyState=='interacti
> ve')
>
{clearInterval("+lpanel.toString()+".timerID);LoadQueue.loadHandler(document
> ..frames['"+lpanel.id+"loadElement'].document.body.innerHTML)}",250);
>     document.frames[lpanel.id+"loadElement"].document.location=url;
>    }
>    else if (is.ns6) {
>     lpanel.timerID=setInterval(this.toString() + '.loadTimer()',250);
>     lpanel.loadElement.src=url;
>    }
>   }
>   Methods.removeFromArray(this.queue,this.index);
>  }
> };
> if (is.ns6) {
>  LoadQueue.prototype.loadTimer=function() {
>   var lpanel=this.currentLoadPanel;
>   if (!document.getElementById(lpanel.id+'loadElement')) {
>    clearInterval(lpanel.timerID);
>    LoadQueue.continueLoad();
>   }
>   else if (lpanel.loadElement.contentDocument &&
> lpanel.loadElement.contentDocument.body.innerHTML !=
> document.body.innerHTML) {
>    clearInterval(lpanel.timerID);
>    LoadQueue.loadHandler(lpanel.loadElement.contentDocument);
>   }
>  }
> } else if (is.ie5) {
>  LoadQueue.prototype.loadTimer=function() {
>   var lpanel=this.currentLoadPanel;
>   if (!document.frames(lpanel.id+'loadElement')) {
>    clearInterval(lpanel.timerID);
>    LoadQueue.continueLoad();
>   }
>   else if (!lpanel.loadElement.document.isLoading &&
> (lpanel.loadElement.document.readyState=='interactive' ||
> lpanel.loadElement.document.readyState=='complete')) {
>    clearInterval(lpanel.timerID);
>    LoadQueue.loadHandler(lpanel.loadElement.document.body.innerHTML);
>   }
>  }
> }
> LoadQueue.loadHandler=function(e) {
>  var q=LoadPanel.queue;
>  var lp=q.currentLoadPanel;
>  if (q.currentLoadPanel) {
>   if (is.ie) {
>    lp.elm.innerHTML=e;
>    if (lp.isIFrame) lp.loadElement=null;
>   }
>   else if (is.ns4) {
>    var lyr = lp.elm;
>    while(lyr.parentLayer != window) lyr = lyr.parentLayer;
>    lyr.onload = function(){};
>    lp.loadElement.onload = function(){};
>   }
>   else if (is.ns6) {
>    var html=e.body.innerHTML;
>    lp.elm.innerHTML=html;
>    lp.loadElement=null;
>   }
>   setTimeout('LoadQueue.continueLoad()',200);
>  }
> };
> LoadQueue.continueLoad=function() {
>  var q=LoadPanel.queue;
>  q.currentLoadPanel.loadHandler(q.currentURL);
>  q.busy=false;
>  if (q.queue[q.index]) q.loadNext();
>  else DynAPI.document.captureMouseEvents();
> };
> LoadPanel.queue=new LoadQueue();
>
> *EOF*
>
> test.html
> -----------------------------------------------------
>
> <html>
> <head>
> <script language="Javascript" src="js/dynapi.js"></script>
> <script language="Javascript">
>  DynAPI.setLibraryPath('js/');
>  DynAPI.include('dynapi.api.*');
>  DynAPI.include('dynapi.event.*');
>  DynAPI.include('dynapi.gui.toloadlayer.js');
> </script>
>
> <script language="Javascript">
> DynAPI.onLoad = function() {
>  panel1 =  new DynLayer( null, 10, 20, 200, 150, "#ffffff")
>  panel1.toLoadLayer("text1.html")
>  DynAPI.document.addChild( panel1 )
>
>  panel2 =  new DynLayer( null, 400, 20, 200, 150, "#ffffff")
>  panel2.toLoadLayer("text2.html")
>
>  DynAPI.document.addChild( panel2 )
> }
> </script>
>
> </head>
> <body>
> </body>
> </html>
>
> *EOF*
>
> text1.html
> -----------------------------------------------------
>
> <html>
> <head>
> </head>
> <body border=0 scroll=no marginwidth=0 marginheight=0 topmargin=0
> leftmargin=0 bgcolor=#ffffff text=#000000 link=#ff0000>
> <a href="text2.html">to TEXt2.html</a><br>
> <a href="text2.html" target="_top">to TEXt2.html target _top</a><br>
> <a href="javascript:alert(1);">javascript alert</a><br>
> </body>
> </html>
>
>
> *EOF*
>
> text2.html
> -----------------------------------------------------
>
> <html>
> <head>
> </head>
> <body border=0 scroll=no marginwidth=0 marginheight=0 topmargin=0
> leftmargin=0 bgcolor=#ffffff text=#000000 link=#ff0000>
> <a href="text1.html">to TEXt1.html</a><br>
> </body>
> </html>
>
> *EOF*
>
>
> Enjoy
> www.microbians.com
> [EMAIL PROTECTED]
>
>
> _______________________________________________
> Dynapi-Help mailing list
> [EMAIL PROTECTED]
> http://lists.sourceforge.net/lists/listinfo/dynapi-help
>


_______________________________________________
Dynapi-Help mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/dynapi-help

Reply via email to