Catrope has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/63250


Change subject: Add ve.properOuterHtml
......................................................................

Add ve.properOuterHtml

Like ve.properInnerHtml but for outerHTML. Factored out the shared code
into ve.fixupPreBug.

Change-Id: I5c5b6d017936c6c2e71631fb8859ba1dbd95615a
---
M modules/ve/ve.js
1 file changed, 29 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor 
refs/changes/50/63250/1

diff --git a/modules/ve/ve.js b/modules/ve/ve.js
index e606403..a956012 100644
--- a/modules/ve/ve.js
+++ b/modules/ve/ve.js
@@ -1095,7 +1095,33 @@
         * @param {HTMLElement} element HTML element to get inner HTML of
         * @returns {string} Inner HTML
         */
-       ve.properInnerHTML = function ( element ) {
+       ve.properInnerHtml = function ( element ) {
+               return ve.fixupPreBug( element ).innerHTML;
+       };
+
+       /**
+        * Get the actual outer HTML of a DOM node.
+        *
+        * @see ve#properInnerHtml
+        *
+        * @param {HTMLElement} element HTML element to get outer HTML of
+        * @returns {string} Outer HTML
+        */
+       ve.properOuterHtml = function ( element ) {
+               return ve.fixupPreBug( element ).outerHTML;
+       };
+
+       /**
+        * Helper function for ve#properInnerHtml and ve#properOuterHtml.
+        *
+        * Detect whether the browser has broken `<pre>` serialization, and if 
so return a clone
+        * of the node with extra newlines added to make it serialize properly. 
If the browser is not
+        * broken, just return the original node.
+        *
+        * @param {HTMLElement} element HTML element to fix up
+        * @returns {HTMLElement} Either element, or a fixed-up clone of it
+        */
+       ve.fixupPreBug = function ( element ) {
                var div, $element;
                if ( ve.isPreInnerHTMLBroken === undefined ) {
                        // Test whether newlines in `<pre>` are serialized back 
correctly
@@ -1105,7 +1131,7 @@
                }
 
                if ( !ve.isPreInnerHTMLBroken ) {
-                       return element.innerHTML;
+                       return element;
                }
 
                // Workaround for bug 42469: if a `<pre>` starts with a 
newline, that means .innerHTML will
@@ -1124,7 +1150,7 @@
                                }
                        }
                } );
-               return $element.get( 0 ).innerHTML;
+               return $element.get( 0 );
        };
 
        // Based on the KeyEvent DOM Level 3 (add more as you need them)

-- 
To view, visit https://gerrit.wikimedia.org/r/63250
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I5c5b6d017936c6c2e71631fb8859ba1dbd95615a
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Catrope <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to