UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

129 lines (89 loc) 3.14 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de License: MIT: https://opensource.org/licenses/MIT See the LICENSE file in the project's top-level directory for details. Authors: * Sebastian Werner (wpbasti) * Fabian Jakobs (fjakobs) ************************************************************************ */ /** * This handler provides a "load" event for iframes */ qx.Class.define("qx.event.handler.Iframe", { extend : qx.core.Object, implement : qx.event.IEventHandler, /* ***************************************************************************** STATICS ***************************************************************************** */ statics : { /** @type {Integer} Priority of this handler */ PRIORITY : qx.event.Registration.PRIORITY_NORMAL, /** @type {Map} Supported event types */ SUPPORTED_TYPES : { load: 1, navigate: 1 }, /** @type {Integer} Which target check to use */ TARGET_CHECK : qx.event.IEventHandler.TARGET_DOMNODE, /** @type {Integer} Whether the method "canHandleEvent" must be called */ IGNORE_CAN_HANDLE : false, /** * Internal function called by iframes created using {@link qx.bom.Iframe}. * * @signature function(target) * @internal * @param target {Element} DOM element which is the target of this event */ onevent : qx.event.GlobalError.observeMethod(function(target) { // Fire navigate event when actual URL diverges from stored URL var currentUrl = qx.bom.Iframe.queryCurrentUrl(target); if (currentUrl !== target.$$url) { qx.event.Registration.fireEvent(target, "navigate", qx.event.type.Data, [currentUrl]); target.$$url = currentUrl; } // Always fire load event qx.event.Registration.fireEvent(target, "load"); }) }, /* ***************************************************************************** MEMBERS ***************************************************************************** */ members : { /* --------------------------------------------------------------------------- EVENT HANDLER INTERFACE --------------------------------------------------------------------------- */ // interface implementation canHandleEvent : function(target, type) { return target.tagName.toLowerCase() === "iframe"; }, // interface implementation registerEvent : function(target, type, capture) { // Nothing needs to be done here }, // interface implementation unregisterEvent : function(target, type, capture) { // Nothing needs to be done here } }, /* ***************************************************************************** DEFER ***************************************************************************** */ defer : function(statics) { qx.event.Registration.addHandler(statics); } });