Hi,
I tested it a little, and found that events do not work for inline layers in
NS6

Cheers,
Richard Bennett

[EMAIL PROTECTED]
www.richardinfo.com
(Everything running on, and ported to the 19/12/2000 snapshot of DynAPI2)

----- Original Message -----
From: "labCoat" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Tuesday, January 23, 2001 9:12 AM
Subject: [Dynapi-Dev] NS6 events and contentWH


> Hello all!
>
> I recently revised the latest (CVS) version of events.js, and have events
working properly in IE5, IE55, NS4, and NS6 (I don't have IE4, but I am
almost positive that it will work in it).
>
> It would be great if anyone would like to plug this into their version of
the API and take it for a test drive! (Also, I would appriciate any
feedback!)
>
> Now, I made A LOT of modifications/optimizations, and I haven't commented
everything, so please don't get angry for the lack of comments... ;-)
>
> Here goes...
>
> <!--//
>
> /*
>    DynAPI Distribution
>    Event Classes
>    Modified: 2001.01.23
>
>    The DynAPI Distribution is distributed under the terms of the GNU LGPL
license.
> */
>
> /*----------------------------------------------------------------------
> -- CLASS:       DynEvent
> -- ARGUMENTS:   type,src,target
> -- METHODS:     getType(), getSource(), getTarget()
> ----------------------------------------------------------------------*/
> DynEvent=function(type,src,target) {
>     this.type=type;
>     this.src=src;
>     this.target=target;
> };
> DynEvent.prototype.getType=function() {
>     return this.type;
> };
> DynEvent.prototype.getSource=function() {
>     return this.src;
> };
> DynEvent.prototype.getTarget=function() {
>     return this.target;
> };
>
>
> /*----------------------------------------------------------------------
> -- CLASS:       EventListener
> -- ARGUMENTS:   target
> -- METHODS:     handleEvent()
> ----------------------------------------------------------------------*/
> EventListener=function(target) {
>     this.target=target;
> }
> EventListener.prototype.handleEvent=function(type,e) {
> if ((e.button==2 || e.button==3) && (type=='mousedown' || type=='mouseup'
|| type=='click' || type=='dblclick')) {
> if (e.button==2) type='md'+type;
> if (e.button==3) type='rt'+type;
>         e.type=type; //ADDED:proteanman
> }
>     if (this["on"+type]) {
>         if (is.ns5) {
>             var mse=(type.match(/mouse/) || type.match(/click/));
>             if (!mse || (!isNaN(e.eventPhase) && ((e.src.isDynLayer &&
(e.eventPhase==1 || e.eventPhase==2)) || (e.src.isDynDocument &&
e.eventPhase==3)))) this["on"+type](e);
>         } else this["on"+type](e);
>     }
> };
>
> /*----------------------------------------------------------------------
> -- CLASS:       MouseEvent
> -- ARGUMENTS:   none
> -- METHODS:     getType(), getSource(), getTarget(), setEvent(),
>                 bubbleEvent(), getX(), getY(), getPageX(), getPageY(),
>                 setBubble(), cancelBrowserEvent()
> ----------------------------------------------------------------------*/
> MouseEvent=function() {};
> MouseEvent.prototype.getType=function() {
>     return this.type;
> };
> MouseEvent.prototype.getSource=function() {
>     return this.src;
> };
> MouseEvent.prototype.getTarget=function() {
>     return this.target;
> };
> MouseEvent.prototype.setEvent=function(src,e) {
>     this.orig=e;
>     this.browserReturn=true;
>     this.bubble=true;
>     this.src=src;
>     this.type=e.type;
>
>     if (is.ie) {
>         //Set event's mouse's x/y & pageX/pageY coords
>         this.pageX=e.x+document.body.scrollLeft;
>         this.pageY=e.y+document.body.scrollTop;
>         this.x=e.offsetX;
>         this.y=e.offsetY;
>
>         //Set event mouse button
>         var b=e.button;
>         if (b==2) b=3;
>         else if (b==4) b=2;
>         this.button=b;
>
>         //Set mouse event's modifiers
>         this.altKey=(e.altKey || e.altLeft);
>         this.ctrlKey=(e.ctrlKey || e.ctrlLeft);
>         this.shiftKey=(e.shiftKey || e.shiftLeft);
>     } else {
>         //ADDED: proteanman -- adds events eventphase property for ns5
>         if (is.ns5) this.eventPhase=e.eventPhase;
>
>         //Set event's mouse's x/y & pageX/pageY coords
>         this.pageX=e.pageX-window.pageXOffset;
>         this.pageY=e.pageY-window.pageYOffset;
>         this.x=e.layerX;
>         this.y=e.layerY;
>
>         //Set event mouse button
>         this.button=e.which;
>
>         //Set mouse event's modifiers
>         var m=e.modifiers;
>         this.altKey=(m==1 || m==3 || m==5 || m==7);
>         this.ctrlKey=(m==2 || m==3 || m==6 || m==7);
>         this.shiftKey=(m==4 || m==5 || m==6 || m==7);
>     }
> };
> MouseEvent.prototype.bubbleEvent=function() {
>     if (!this.bubble || this.src.isDynDocument || this.src.parent==null)
return;
>     this.x+=this.src.x;
>     this.y+=this.src.y;
>     this.src=this.src.parent;
>     this.src.invokeEvent(this.type,this);
>     this.bubbleEvent();
>     return;
> };
> MouseEvent.prototype.getX=function() {
>     return this.x;
> };
> MouseEvent.prototype.getY=function() {
>     return this.y;
> };
> MouseEvent.prototype.getPageX=function() {
>     return this.pageX;
> };
> MouseEvent.prototype.getPageY=function() {
>     return this.pageY;
> };
> MouseEvent.prototype.setBubble=function(b) {
>     this.bubble=b;
> };
> MouseEvent.prototype.cancelBrowserEvent=function(b) {
>     this.browserReturn=false;
> };
>
> /*----------------------------------------------------------------------
> -- DynLayer Event Methods
> ----------------------------------------------------------------------*/
> DynLayer.prototype.captureMouseEvents=function() {
>     if (this.isDynDocument && this.mouseEventsCaptured) return;
>     this.mouseEventsCaptured=true;
>
>     if (!this.eventListeners) this.eventListeners=[];
>     this.hasEventListeners=true;
>
>     if (this.isDynLayer && (!this.created || !this.elm)) return;
>
>     var o=(this.isDynDocument)?this.doc:this.elm;
>
>     if (is.ns4) {
>         if (this.isDynLayer) o.captureEvents(Event.MOUSEOVER |
Event.MOUSEMOVE | Event.MOUSEDOWN | Event.MOUSEUP | Event.CLICK |
Event.DBLCLICK | Event.MOUSEOUT);
>         else if (this.isDynDocument) o.captureEvents(Event.MOUSEMOVE |
Event.MOUSEDOWN | Event.MOUSEUP | Event.CLICK | Event.DBLCLICK);
>     } else if (is.ie) {
>         o.oncontextmenu=function() {
>             return false;
>         };
>     }
>
>     if (is.ns5) {
>         if (this.isDynLayer) {
>             //true (bubble phase - from src to window): eventPhase = 1 to
2
>
o.addEventListener("mouseover",DynLayer.prototype.EventMethod,true);
>
o.addEventListener("mousemove",DynLayer.prototype.EventMethod,true);
>
o.addEventListener("mousedown",DynLayer.prototype.EventMethod,true);
>
o.addEventListener("mouseup",DynLayer.prototype.EventMethod,true);
>
o.addEventListener("click",DynLayer.prototype.EventMethod,true);
>
o.addEventListener("dblclick",DynLayer.prototype.EventMethod,true);
>
o.addEventListener("mouseout",DynLayer.prototype.EventMethod,true);
>         } else if (this.isDynDocument) {
>             //false (capture phase - from window to src): eventPhase = 3
>
o.addEventListener("mousemove",DynDocument.prototype.EventMethod,false);
>
o.addEventListener("mousedown",DynDocument.prototype.EventMethod,false);
>
o.addEventListener("mouseup",DynDocument.prototype.EventMethod,false);
>
o.addEventListener("click",DynDocument.prototype.EventMethod,false);
>
o.addEventListener("dblclick",DynDocument.prototype.EventMethod,false);
>         }
>     } else {
>         if (this.isDynLayer)
o.onmouseover=o.onmousemove=o.onmousedown=o.onmouseup=o.onclick=o.ondblclick
=o.onmouseout=DynLayer.prototype.EventMethod;
>         else if (this.isDynDocument)
o.onmousemove=o.onmousedown=o.onmouseup=o.onclick=o.ondblclick=DynDocument.p
rototype.EventMethod;
>     }
> };
> DynLayer.prototype.releaseMouseEvents=function() {
>     this.mouseEventsCaptured=false;
>     if (this.isDynLayer) {
>         var o=this.elm;
>
o.onmouseover=o.onmousemove=o.onmousedown=o.onmouseup=o.onclick=o.ondblclick
=o.onmouseout=function(e) {
>             return false;
>         };
>     } else if (this.isDynDocument) {
>         var o=this.doc;
>
o.onmousemove=o.onmousedown=o.onmouseup=o.onclick=o.ondblclick=function(e) {
>             return false;
>         };
>     }
> };
> DynLayer.prototype.EventMethod=function(e) {
>     var dyndoc=this.lyrobj.dyndoc;
>     if (is.ie) {
>         var e=dyndoc.elm.event;
>         e.cancelBubble=true;
>         if (e.type=="click" && DynAPI.wasDragging) {
>             DynAPI.wasDragging=false;
>             return true;
>         }
>         if ((e.type=="mouseout" && this.contains(e.toElement)) ||
(e.type=="mouseover" && this.contains(e.fromElement))) return true;
>     }
>
>     var
realsrc=(is.ie)?e.srcElement:(is.ns5)?e.currentTarget:e.target;//var
realsrc=(is.ie)?e.srcElement:e.target;
>
>     if (is.ie) while (!realsrc.lyrobj && realsrc.parentElement &&
realsrc.parentElement!=realsrc) realsrc=realsrc.parentElement;//for (; is.ie
&& !realsrc.lyrobj && realsrc.parentElement &&
realsrc.parentElement!=realsrc; realsrc=realsrc.parentElement);
>     else if (is.ns5) while (!realsrc.lyrobj && realsrc.parentNode &&
realsrc.parentNode!=realsrc) realsrc=realsrc.parentNode;
>
>     var src=realsrc.lyrobj||dyndoc;
>     if (!src) return true;
>     var evt=dyndoc._e;
>     evt.setEvent(src,e);
>     var type=evt.type;
>     src.invokeEvent(type,evt);
>
>     if (!this.isDynDocument && is.ns && (e.type=="mouseover" ||
e.type=="mouseout")) return false;
>
>     evt.bubbleEvent();
>
>     //returns false after double-click, so that the click event doesn't
happen again (it happens before) after the double-click -- works all but ns5
>     if (type.match(/dblclick/)) return false;
>
>     //checks for mousedown so that clicks will get fired in ns4
>     else if (is.ns4 && evt.button!=3 && type.match(/mousedown/)) return
true;
>
>     //checks if there is a right-mousedown(ns4) || right-mouseup(ns5) and
prevents the right-mouse menu from popping up
>     else if ((is.ns4 && evt.button==3 && type.match(/mousedown/)) ||
(is.ns5 && evt.button==3 && type.match(/mouseup/))) return false;
>     else return evt.browserReturn;
> };
> DynLayer.prototype.addEventListener=function(listener) {
> if (!this.hasEventListeners) this.captureMouseEvents();
> for (var i in this.eventListeners) {
>         if (this.eventListeners[i]==listener) return;
>     }
> this.eventListeners[this.eventListeners.length]=listener;
> };
> DynLayer.prototype.removeEventListener=function(listener) {
>     DynAPI.removeFromArray(this.eventListeners, listener, false);
> };
> DynLayer.prototype.removeAllEventListeners=function() {
>     if (!this.hasEventListeners) return;
> for (var i in this.eventListeners) delete this.eventListeners[i];
> this.eventListeners=[];
> this.hasEventListeners=false;
> };
> DynLayer.prototype.invokeEvent=function(type,e) {
> if (!this.hasEventListeners) return;
>
>     if (is.ie && this.isDynLayer && ((type=='mouseover' &&
this.elm.contains(e.orig.fromElement)) || (type=='mouseout' &&
this.elm.contains(e.orig.toElement)))) return;
>
>     var orig=null;
> if (is.ns && e) {
> orig=e.orig;
> e.cancelBubble=false;
>     }
> if (is.ns4 && is.platform=='other' && type.match(/mousedown/)) {
>         if (this.dbltimer!=null) {
>             type="dblclick";
>             if (e) e.type=type;
>         } else this.dbltimer=setTimeout(this+'.dbltimer=null',300);
> }
>     for (var i=0; i<this.eventListeners.length; i++) {
>         if (e) e.target=this.eventListeners[i].target;
> else {
> e=new DynEvent(type,this);
> e.target=this.eventListeners[i].target;
>     if (is.ns) e.cancelBubble=false;
> }
>         this.eventListeners[i].handleEvent(type,e);
> }
>
>     if (is.ns && ((this.isDynLayer && e) || (this.isDynDocument && (e ||
i!=0)))) {
> if (e.cancelBubble) return;
>         if (orig && orig.target.handleEvent) {
>             if (this.isDynLayer && orig.target!=this.elm)
orig.target.handleEvent(type,orig);
>             else if (this.isDynDocument && !orig.target.URL)
orig.target.handleEvent(orig);
>         }
>     }
> if (is.ns4 && is.platform=='other' && type=='mouseup')
this.invokeEvent('click',e);
>     if (this.isDynLayer && this.parentComponent) {
>         if (e) e.src=this.parentComponent;
>         else e=new DynEvent(type,this);
>         this.parentComponent.invokeEvent(type,e);
>     }
> };
>
> /*----------------------------------------------------------------------
> -- DynDocument Event Methods
> ----------------------------------------------------------------------*/
> DynDocument.prototype._e=new MouseEvent();
>
DynDocument.prototype.captureMouseEvents=DynLayer.prototype.captureMouseEven
ts;
>
DynDocument.prototype.releaseMouseEvents=DynLayer.prototype.releaseMouseEven
ts;
> DynDocument.prototype.EventMethod=DynLayer.prototype.EventMethod;
>
DynDocument.prototype.addEventListener=DynLayer.prototype.addEventListener;
>
DynDocument.prototype.removeEventListener=DynLayer.prototype.removeEventList
ener;
>
DynDocument.prototype.removeAllEventListeners=DynLayer.prototype.removeAllEv
entListeners;
> DynDocument.prototype.invokeEvent=DynLayer.prototype.invokeEvent;
>
> //-->
>
> I have also made A LOT of modifications to dynlayer.js, which fixes some
of the existing problems, including tge contentW/H (specifically in NS4 and
NS6, in the createElement). But it is still undergoing evtensive testing.
>
> I need to set up CVS on my computer, so that I can make these updates
soon.
>
> --proteanman
>
> On Mon, 22 January 2001, [EMAIL PROTECTED] wrote:
>
> >
> > I tried your patch and still doubleclick on ns 6 doesn't work
> > ciao
> > Y
> > On Mon, 22 January 2001, [EMAIL PROTECTED] wrote:
> >
> > >
> > > Patch #103359 has been updated.
> > >
> > > Project: dynapi
> > > Category: DynAPI-Event
> > > Status: Open
> > > Submitted by: camhart
> > > Assigned to : nobody
> > > Summary: NS6 event fixes
> > >
> > > Follow-Ups:
> > >
> > > Date: 2001-Jan-22 19:55
> > > By: nobody
> > >
> > > Comment:
> > > Tested and working
> > > Richard Bennett
> > > -------------------------------------------------------
> > >
> > > -------------------------------------------------------
> > > For more info, visit:
> > >
> > >
http://sourceforge.net/patch/?func=detailpatch&patch_id=103359&group_id=5757
> > >
> > > _______________________________________________
> > > Dynapi-Dev mailing list
> > > [EMAIL PROTECTED]
> > > http://lists.sourceforge.net/lists/listinfo/dynapi-dev
> >
> >
> >
> > _______________________________________________
> > Dynapi-Dev mailing list
> > [EMAIL PROTECTED]
> > http://lists.sourceforge.net/lists/listinfo/dynapi-dev
>
> _______________________________________________
> Dynapi-Dev mailing list
> [EMAIL PROTECTED]
> http://lists.sourceforge.net/lists/listinfo/dynapi-dev
> ____________________________________________________________
> Get your free domain name and domain-based e-mail from
> Namezero.com. New!  Namezero Plus domains now available.
> Find out more at: http://www.namezero.com
>


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

Reply via email to