Ticket #192: oncontent_192.diff

File oncontent_192.diff, 2.8 kB (added by therve@gmail.com, 2 years ago)
  • Signal.js

    old new  
    6868            ', type(): ' + repr(this.type()) + 
    6969            ', target(): ' + repr(this.target()); 
    7070 
    71         if (this.type() &&  
     71        if (this.type() && 
    7272            this.type().indexOf('key') === 0 || 
    7373            this.type().indexOf('mouse') === 0 || 
    7474            this.type().indexOf('click') != -1 || 
     
    607607 
    608608    }, 
    609609 
     610    _domContentLoadedCalled: false, 
     611 
     612    _onContentLoaded: function (evt) { 
     613        var self = MochiKit.Signal; 
     614 
     615        if (self._domContentLoadedCalled) { 
     616            return; 
     617        } 
     618        self._domContentLoadedCalled = true; 
     619        var observers = self._observers; 
     620        for (var i = 0; i < observers.length; i++) { 
     621            if (observers[i][1] == "ondomcontentloaded") { 
     622                try { 
     623                    observers[i][2].apply(observers[i][0], []); 
     624                } catch (e) { 
     625                    // pass 
     626                } 
     627            } 
     628        } 
     629    }, 
     630 
     631    _domContentLoadedAdded: false, 
     632 
     633    _addOnContentLoaded: function () { 
     634        var self = MochiKit.Signal; 
     635 
     636        if (self._domContentLoadedAdded) { 
     637            return; 
     638        } 
     639        self._domContentLoadedAdded = true; 
     640 
     641        if (/MSIE/i.test(navigator.userAgent)) { 
     642            document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>"); 
     643            var script = document.getElementById("__ie_onload"); 
     644            script.onreadystatechange = function () { 
     645                if (this.readyState == "complete") { 
     646                    self._onContentLoaded(); 
     647                } 
     648            }; 
     649        } else if (/WebKit|Khtml/i.test(navigator.userAgent) || (window.opera && parseInt(window.opera.version()) < 9)) { 
     650            var _timer = setInterval(function () { 
     651                if (/loaded|complete/.test(document.readyState)) { 
     652                    clearInterval(_timer); 
     653                    self._onContentLoaded(); 
     654                } 
     655            }, 10); 
     656        } else { 
     657            document.addEventListener("DOMContentLoaded", self._onContentLoaded, false); 
     658        } 
     659    }, 
     660 
    610661    /** @id MochiKit.Signal.connect */ 
    611662    connect: function (src, sig, objOrFunc/* optional */, funcOrStr) { 
    612663        src = MochiKit.DOM.getElement(src); 
     
    636687            var listener = self._listener(src, func, obj, isDOM); 
    637688        } 
    638689 
    639         if (src.addEventListener) { 
     690        if (sig == "ondomcontentloaded") { 
     691            self._addOnContentLoaded() 
     692        } else if (src.addEventListener) { 
    640693            src.addEventListener(sig.substr(2), listener, false); 
    641694        } else if (src.attachEvent) { 
    642695            src.attachEvent(sig, listener); // useCapture unsupported