JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
vanilla ckeditor-3.6.3
[ckeditor.git] / _source / core / dom / domobject.js
index f10db99..e342dc8 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.\r
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.\r
 For licensing, see LICENSE.html or http://ckeditor.com/license\r
 */\r
 \r
@@ -128,10 +128,10 @@ CKEDITOR.dom.domObject.prototype = (function()
                        for ( var eventName in nativeListeners )\r
                        {\r
                                var listener = nativeListeners[ eventName ];\r
-                               if ( this.$.removeEventListener )\r
-                                       this.$.removeEventListener( eventName, listener, false );\r
-                               else if ( this.$.detachEvent )\r
+                               if ( this.$.detachEvent )\r
                                        this.$.detachEvent( 'on' + eventName, listener );\r
+                               else if ( this.$.removeEventListener )\r
+                                       this.$.removeEventListener( eventName, listener, false );\r
 \r
                                delete nativeListeners[ eventName ];\r
                        }\r
@@ -167,6 +167,9 @@ CKEDITOR.dom.domObject.prototype = (function()
        /**\r
         * Sets a data slot value for this object. These values are shared by all\r
         * instances pointing to that same DOM object.\r
+        * <strong>Note:</strong> The created data slot is only guarantied to be available on this unique dom node,\r
+        * thus any wish to continue access it from other element clones (either created by clone node or from innerHtml)\r
+        * will fail, for such usage, please use {@link CKEDITOR.dom.element::setAttribute} instead.\r
         * @name CKEDITOR.dom.domObject.prototype.setCustomData\r
         * @function\r
         * @param {String} key A key used to identify the data slot.\r
@@ -200,7 +203,7 @@ CKEDITOR.dom.domObject.prototype = (function()
         */\r
        domObjectProto.getCustomData = function( key )\r
        {\r
-               var expandoNumber = this.$._cke_expando,\r
+               var expandoNumber = this.$[ 'data-cke-expando' ],\r
                        dataSlot = expandoNumber && customData[ expandoNumber ];\r
 \r
                return dataSlot && dataSlot[ key ];\r
@@ -211,7 +214,7 @@ CKEDITOR.dom.domObject.prototype = (function()
         */\r
        domObjectProto.removeCustomData = function( key )\r
        {\r
-               var expandoNumber = this.$._cke_expando,\r
+               var expandoNumber = this.$[ 'data-cke-expando' ],\r
                        dataSlot = expandoNumber && customData[ expandoNumber ],\r
                        retval = dataSlot && dataSlot[ key ];\r
 \r
@@ -233,16 +236,20 @@ CKEDITOR.dom.domObject.prototype = (function()
                // Clear all event listeners\r
                this.removeAllListeners();\r
 \r
-               var expandoNumber = this.$._cke_expando;\r
+               var expandoNumber = this.$[ 'data-cke-expando' ];\r
                expandoNumber && delete customData[ expandoNumber ];\r
        };\r
 \r
        /**\r
-        * @name CKEDITOR.dom.domObject.prototype.getCustomData\r
+        * Gets an ID that can be used to identiquely identify this DOM object in\r
+        * the running session.\r
+        * @name CKEDITOR.dom.domObject.prototype.getUniqueId\r
+        * @function\r
+        * @returns {Number} A unique ID.\r
         */\r
        domObjectProto.getUniqueId = function()\r
        {\r
-               return this.$._cke_expando || ( this.$._cke_expando = CKEDITOR.tools.getNextNumber() );\r
+               return this.$[ 'data-cke-expando' ] || ( this.$[ 'data-cke-expando' ] = CKEDITOR.tools.getNextNumber() );\r
        };\r
 \r
        // Implement CKEDITOR.event.\r