From 5f837074f9c1511ddffa1b7349a5b2efec3210cb Mon Sep 17 00:00:00 2001 From: Cedric Sohrauer Date: Tue, 13 Jan 2015 23:00:07 +0100 Subject: [PATCH] adds a composite component for an iframe to handle load events This is basically a copy of ReactDOMImg --- src/browser/ui/ReactDefaultInjection.js | 2 + .../ui/dom/components/ReactDOMIframe.js | 43 +++++++++++++++++++ .../__tests__/ReactDOMIframe-test.js | 36 ++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 src/browser/ui/dom/components/ReactDOMIframe.js create mode 100644 src/browser/ui/dom/components/__tests__/ReactDOMIframe-test.js diff --git a/src/browser/ui/ReactDefaultInjection.js b/src/browser/ui/ReactDefaultInjection.js index 3e2d21d618..fdb7254615 100644 --- a/src/browser/ui/ReactDefaultInjection.js +++ b/src/browser/ui/ReactDefaultInjection.js @@ -28,6 +28,7 @@ var ReactDOMButton = require('ReactDOMButton'); var ReactDOMForm = require('ReactDOMForm'); var ReactDOMImg = require('ReactDOMImg'); var ReactDOMIDOperations = require('ReactDOMIDOperations'); +var ReactDOMIframe = require('ReactDOMIframe'); var ReactDOMInput = require('ReactDOMInput'); var ReactDOMOption = require('ReactDOMOption'); var ReactDOMSelect = require('ReactDOMSelect'); @@ -85,6 +86,7 @@ function inject() { ReactInjection.NativeComponent.injectComponentClasses({ 'button': ReactDOMButton, 'form': ReactDOMForm, + 'iframe': ReactDOMIframe, 'img': ReactDOMImg, 'input': ReactDOMInput, 'option': ReactDOMOption, diff --git a/src/browser/ui/dom/components/ReactDOMIframe.js b/src/browser/ui/dom/components/ReactDOMIframe.js new file mode 100644 index 0000000000..706a48f1a6 --- /dev/null +++ b/src/browser/ui/dom/components/ReactDOMIframe.js @@ -0,0 +1,43 @@ +/** + * Copyright 2013-2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @providesModule ReactDOMIframe + */ + +'use strict'; + +var EventConstants = require('EventConstants'); +var LocalEventTrapMixin = require('LocalEventTrapMixin'); +var ReactBrowserComponentMixin = require('ReactBrowserComponentMixin'); +var ReactClass = require('ReactClass'); +var ReactElement = require('ReactElement'); + +var iframe = ReactElement.createFactory('iframe'); + +/** + * Since onLoad doesn't bubble OR capture on the top level in IE8, we need to + * capture it on the