UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

115 lines (91 loc) 3.12 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(target, type) { return target.tagName.toLowerCase() === "iframe"; }, // interface implementation registerEvent(target, type, capture) { // Nothing needs to be done here }, // interface implementation unregisterEvent(target, type, capture) { // Nothing needs to be done here } }, /* ***************************************************************************** DEFER ***************************************************************************** */ defer(statics) { qx.event.Registration.addHandler(statics); } });