diff options
Diffstat (limited to 'sources/plugins/wysiwygarea')
-rw-r--r-- | sources/plugins/wysiwygarea/plugin.js | 54 |
1 files changed, 27 insertions, 27 deletions
diff --git a/sources/plugins/wysiwygarea/plugin.js b/sources/plugins/wysiwygarea/plugin.js index 962f31e..1358129 100644 --- a/sources/plugins/wysiwygarea/plugin.js +++ b/sources/plugins/wysiwygarea/plugin.js | |||
@@ -29,7 +29,7 @@ | |||
29 | // With IE, the custom domain has to be taken care at first, | 29 | // With IE, the custom domain has to be taken care at first, |
30 | // for other browers, the 'src' attribute should be left empty to | 30 | // for other browers, the 'src' attribute should be left empty to |
31 | // trigger iframe's 'load' event. | 31 | // trigger iframe's 'load' event. |
32 | // Microsoft Edge throws "Permission Denied" if treated like an IE (#13441). | 32 | // Microsoft Edge throws "Permission Denied" if treated like an IE (http://dev.ckeditor.com/ticket/13441). |
33 | if ( CKEDITOR.env.air ) { | 33 | if ( CKEDITOR.env.air ) { |
34 | src = 'javascript:void(0)'; // jshint ignore:line | 34 | src = 'javascript:void(0)'; // jshint ignore:line |
35 | } else if ( CKEDITOR.env.ie && !CKEDITOR.env.edge ) { | 35 | } else if ( CKEDITOR.env.ie && !CKEDITOR.env.edge ) { |
@@ -139,7 +139,7 @@ | |||
139 | body.hideFocus = true; | 139 | body.hideFocus = true; |
140 | 140 | ||
141 | // Disable and re-enable the body to avoid IE from | 141 | // Disable and re-enable the body to avoid IE from |
142 | // taking the editing focus at startup. (#141 / #523) | 142 | // taking the editing focus at startup. (http://dev.ckeditor.com/ticket/141 / http://dev.ckeditor.com/ticket/523) |
143 | body.disabled = true; | 143 | body.disabled = true; |
144 | body.removeAttribute( 'disabled' ); | 144 | body.removeAttribute( 'disabled' ); |
145 | } | 145 | } |
@@ -156,19 +156,19 @@ | |||
156 | 156 | ||
157 | var editable = this; | 157 | var editable = this; |
158 | 158 | ||
159 | // Without it IE8 has problem with removing selection in nested editable. (#13785) | 159 | // Without it IE8 has problem with removing selection in nested editable. (http://dev.ckeditor.com/ticket/13785) |
160 | if ( CKEDITOR.env.ie && !CKEDITOR.env.edge ) { | 160 | if ( CKEDITOR.env.ie && !CKEDITOR.env.edge ) { |
161 | doc.getDocumentElement().addClass( doc.$.compatMode ); | 161 | doc.getDocumentElement().addClass( doc.$.compatMode ); |
162 | } | 162 | } |
163 | 163 | ||
164 | // Prevent IE/Edge from leaving a new paragraph/div after deleting all contents in body. (#6966, #13142) | 164 | // Prevent IE/Edge from leaving a new paragraph/div after deleting all contents in body. (http://dev.ckeditor.com/ticket/6966, http://dev.ckeditor.com/ticket/13142) |
165 | if ( CKEDITOR.env.ie && !CKEDITOR.env.edge && editor.enterMode != CKEDITOR.ENTER_P ) { | 165 | if ( CKEDITOR.env.ie && !CKEDITOR.env.edge && editor.enterMode != CKEDITOR.ENTER_P ) { |
166 | removeSuperfluousElement( 'p' ); | 166 | removeSuperfluousElement( 'p' ); |
167 | } else if ( CKEDITOR.env.edge && editor.enterMode != CKEDITOR.ENTER_DIV ) { | 167 | } else if ( CKEDITOR.env.edge && editor.enterMode != CKEDITOR.ENTER_DIV ) { |
168 | removeSuperfluousElement( 'div' ); | 168 | removeSuperfluousElement( 'div' ); |
169 | } | 169 | } |
170 | 170 | ||
171 | // Fix problem with cursor not appearing in Webkit and IE11+ when clicking below the body (#10945, #10906). | 171 | // Fix problem with cursor not appearing in Webkit and IE11+ when clicking below the body (http://dev.ckeditor.com/ticket/10945, http://dev.ckeditor.com/ticket/10906). |
172 | // Fix for older IEs (8-10 and QM) is placed inside selection.js. | 172 | // Fix for older IEs (8-10 and QM) is placed inside selection.js. |
173 | if ( CKEDITOR.env.webkit || ( CKEDITOR.env.ie && CKEDITOR.env.version > 10 ) ) { | 173 | if ( CKEDITOR.env.webkit || ( CKEDITOR.env.ie && CKEDITOR.env.version > 10 ) ) { |
174 | doc.getDocumentElement().on( 'mousedown', function( evt ) { | 174 | doc.getDocumentElement().on( 'mousedown', function( evt ) { |
@@ -196,7 +196,7 @@ | |||
196 | // PageUp OR PageDown | 196 | // PageUp OR PageDown |
197 | if ( keyCode == 33 || keyCode == 34 ) { | 197 | if ( keyCode == 33 || keyCode == 34 ) { |
198 | // PageUp/PageDown scrolling is broken in document | 198 | // PageUp/PageDown scrolling is broken in document |
199 | // with standard doctype, manually fix it. (#4736) | 199 | // with standard doctype, manually fix it. (http://dev.ckeditor.com/ticket/4736) |
200 | if ( CKEDITOR.env.ie ) { | 200 | if ( CKEDITOR.env.ie ) { |
201 | setTimeout( function() { | 201 | setTimeout( function() { |
202 | editor.getSelection().scrollIntoView(); | 202 | editor.getSelection().scrollIntoView(); |
@@ -205,7 +205,7 @@ | |||
205 | // Page up/down cause editor selection to leak | 205 | // Page up/down cause editor selection to leak |
206 | // outside of editable thus we try to intercept | 206 | // outside of editable thus we try to intercept |
207 | // the behavior, while it affects only happen | 207 | // the behavior, while it affects only happen |
208 | // when editor contents are not overflowed. (#7955) | 208 | // when editor contents are not overflowed. (http://dev.ckeditor.com/ticket/7955) |
209 | else if ( editor.window.$.innerHeight > this.$.offsetHeight ) { | 209 | else if ( editor.window.$.innerHeight > this.$.offsetHeight ) { |
210 | var range = editor.createRange(); | 210 | var range = editor.createRange(); |
211 | range[ keyCode == 33 ? 'moveToElementEditStart' : 'moveToElementEditEnd' ]( this ); | 211 | range[ keyCode == 33 ? 'moveToElementEditStart' : 'moveToElementEditEnd' ]( this ); |
@@ -221,14 +221,14 @@ | |||
221 | // focus is moved onto a non-editing host, e.g. link or button, but | 221 | // focus is moved onto a non-editing host, e.g. link or button, but |
222 | // it becomes a problem for the object type selection, since the resizer | 222 | // it becomes a problem for the object type selection, since the resizer |
223 | // handler attached on it will mark other part of the UI, especially | 223 | // handler attached on it will mark other part of the UI, especially |
224 | // for the dialog. (#8157) | 224 | // for the dialog. (http://dev.ckeditor.com/ticket/8157) |
225 | // [IE<8 & Opera] Even worse For old IEs, the cursor will not vanish even if | 225 | // [IE<8 & Opera] Even worse For old IEs, the cursor will not vanish even if |
226 | // the selection has been moved to another text input in some cases. (#4716) | 226 | // the selection has been moved to another text input in some cases. (http://dev.ckeditor.com/ticket/4716) |
227 | // | 227 | // |
228 | // Now the range restore is disabled, so we simply force IE to clean | 228 | // Now the range restore is disabled, so we simply force IE to clean |
229 | // up the selection before blur. | 229 | // up the selection before blur. |
230 | this.attachListener( doc, 'blur', function() { | 230 | this.attachListener( doc, 'blur', function() { |
231 | // Error proof when the editor is not visible. (#6375) | 231 | // Error proof when the editor is not visible. (http://dev.ckeditor.com/ticket/6375) |
232 | try { | 232 | try { |
233 | doc.$.selection.empty(); | 233 | doc.$.selection.empty(); |
234 | } catch ( er ) {} | 234 | } catch ( er ) {} |
@@ -237,14 +237,14 @@ | |||
237 | 237 | ||
238 | if ( CKEDITOR.env.iOS ) { | 238 | if ( CKEDITOR.env.iOS ) { |
239 | // [iOS] If touch is bound to any parent of the iframe blur happens on any touch | 239 | // [iOS] If touch is bound to any parent of the iframe blur happens on any touch |
240 | // event and body becomes the focused element (#10714). | 240 | // event and body becomes the focused element (http://dev.ckeditor.com/ticket/10714). |
241 | this.attachListener( doc, 'touchend', function() { | 241 | this.attachListener( doc, 'touchend', function() { |
242 | win.focus(); | 242 | win.focus(); |
243 | } ); | 243 | } ); |
244 | } | 244 | } |
245 | 245 | ||
246 | var title = editor.document.getElementsByTag( 'title' ).getItem( 0 ); | 246 | var title = editor.document.getElementsByTag( 'title' ).getItem( 0 ); |
247 | // document.title is malfunctioning on Chrome, so get value from the element (#12402). | 247 | // document.title is malfunctioning on Chrome, so get value from the element (http://dev.ckeditor.com/ticket/12402). |
248 | title.data( 'cke-title', title.getText() ); | 248 | title.data( 'cke-title', title.getText() ); |
249 | 249 | ||
250 | // [IE] JAWS will not recognize the aria label we used on the iframe | 250 | // [IE] JAWS will not recognize the aria label we used on the iframe |
@@ -292,7 +292,7 @@ | |||
292 | // 2. On keyup remove all elements that were not marked | 292 | // 2. On keyup remove all elements that were not marked |
293 | // as non-superfluous (which means they must have had appeared in the meantime). | 293 | // as non-superfluous (which means they must have had appeared in the meantime). |
294 | // Also we should preserve all temporary elements inserted by editor – otherwise we'd likely | 294 | // Also we should preserve all temporary elements inserted by editor – otherwise we'd likely |
295 | // leak fake selection's content into editable due to removing hidden selection container (#14831). | 295 | // leak fake selection's content into editable due to removing hidden selection container (http://dev.ckeditor.com/ticket/14831). |
296 | editable.attachListener( editable, 'keyup', function() { | 296 | editable.attachListener( editable, 'keyup', function() { |
297 | var elements = doc.getElementsByTag( tagName ); | 297 | var elements = doc.getElementsByTag( tagName ); |
298 | if ( lockRetain ) { | 298 | if ( lockRetain ) { |
@@ -312,7 +312,7 @@ | |||
312 | 312 | ||
313 | this._.frameLoadedHandler = CKEDITOR.tools.addFunction( function( win ) { | 313 | this._.frameLoadedHandler = CKEDITOR.tools.addFunction( function( win ) { |
314 | // Avoid opening design mode in a frame window thread, | 314 | // Avoid opening design mode in a frame window thread, |
315 | // which will cause host page scrolling.(#4397) | 315 | // which will cause host page scrolling.(http://dev.ckeditor.com/ticket/4397) |
316 | CKEDITOR.tools.setTimeout( onDomReady, 0, this, win ); | 316 | CKEDITOR.tools.setTimeout( onDomReady, 0, this, win ); |
317 | }, this ); | 317 | }, this ); |
318 | 318 | ||
@@ -330,7 +330,7 @@ | |||
330 | this.fixInitialSelection(); | 330 | this.fixInitialSelection(); |
331 | 331 | ||
332 | // Fire dataReady for the consistency with inline editors | 332 | // Fire dataReady for the consistency with inline editors |
333 | // and because it makes sense. (#10370) | 333 | // and because it makes sense. (http://dev.ckeditor.com/ticket/10370) |
334 | editor.fire( 'dataReady' ); | 334 | editor.fire( 'dataReady' ); |
335 | } | 335 | } |
336 | else { | 336 | else { |
@@ -420,7 +420,7 @@ | |||
420 | } | 420 | } |
421 | 421 | ||
422 | // The script that launches the bootstrap logic on 'domReady', so the document | 422 | // The script that launches the bootstrap logic on 'domReady', so the document |
423 | // is fully editable even before the editing iframe is fully loaded (#4455). | 423 | // is fully editable even before the editing iframe is fully loaded (http://dev.ckeditor.com/ticket/4455). |
424 | var bootstrapCode = | 424 | var bootstrapCode = |
425 | '<script id="cke_actscrpt" type="text/javascript"' + ( CKEDITOR.env.ie ? ' defer="defer" ' : '' ) + '>' + | 425 | '<script id="cke_actscrpt" type="text/javascript"' + ( CKEDITOR.env.ie ? ' defer="defer" ' : '' ) + '>' + |
426 | 'var wasLoaded=0;' + // It must be always set to 0 as it remains as a window property. | 426 | 'var wasLoaded=0;' + // It must be always set to 0 as it remains as a window property. |
@@ -442,7 +442,7 @@ | |||
442 | } | 442 | } |
443 | 443 | ||
444 | // IE<10 needs this hack to properly enable <base href="...">. | 444 | // IE<10 needs this hack to properly enable <base href="...">. |
445 | // See: http://stackoverflow.com/a/13373180/1485219 (#11910). | 445 | // See: http://stackoverflow.com/a/13373180/1485219 (http://dev.ckeditor.com/ticket/11910). |
446 | if ( baseTag && CKEDITOR.env.ie && CKEDITOR.env.version < 10 ) { | 446 | if ( baseTag && CKEDITOR.env.ie && CKEDITOR.env.version < 10 ) { |
447 | bootstrapCode += | 447 | bootstrapCode += |
448 | '<script id="cke_basetagscrpt">' + | 448 | '<script id="cke_basetagscrpt">' + |
@@ -461,7 +461,7 @@ | |||
461 | 461 | ||
462 | var doc = this.getDocument(); | 462 | var doc = this.getDocument(); |
463 | 463 | ||
464 | // Work around Firefox bug - error prune when called from XUL (#320), | 464 | // Work around Firefox bug - error prune when called from XUL (http://dev.ckeditor.com/ticket/320), |
465 | // defer it thanks to the async nature of this method. | 465 | // defer it thanks to the async nature of this method. |
466 | try { | 466 | try { |
467 | doc.write( data ); | 467 | doc.write( data ); |
@@ -486,9 +486,9 @@ | |||
486 | 486 | ||
487 | var data = fullPage ? doc.getDocumentElement().getOuterHtml() : doc.getBody().getHtml(); | 487 | var data = fullPage ? doc.getDocumentElement().getOuterHtml() : doc.getBody().getHtml(); |
488 | 488 | ||
489 | // BR at the end of document is bogus node for Mozilla. (#5293). | 489 | // BR at the end of document is bogus node for Mozilla. (http://dev.ckeditor.com/ticket/5293). |
490 | // Prevent BRs from disappearing from the end of the content | 490 | // Prevent BRs from disappearing from the end of the content |
491 | // while enterMode is ENTER_BR (#10146). | 491 | // while enterMode is ENTER_BR (http://dev.ckeditor.com/ticket/10146). |
492 | if ( CKEDITOR.env.gecko && config.enterMode != CKEDITOR.ENTER_BR ) | 492 | if ( CKEDITOR.env.gecko && config.enterMode != CKEDITOR.ENTER_BR ) |
493 | data = data.replace( /<br>(?=\s*(:?$|<\/body>))/, '' ); | 493 | data = data.replace( /<br>(?=\s*(:?$|<\/body>))/, '' ); |
494 | 494 | ||
@@ -517,7 +517,7 @@ | |||
517 | onResize; | 517 | onResize; |
518 | 518 | ||
519 | // Trying to access window's frameElement property on Edge throws an exception | 519 | // Trying to access window's frameElement property on Edge throws an exception |
520 | // when frame was already removed from DOM. (#13850, #13790) | 520 | // when frame was already removed from DOM. (http://dev.ckeditor.com/ticket/13850, http://dev.ckeditor.com/ticket/13790) |
521 | try { | 521 | try { |
522 | iframe = editor.window.getFrame(); | 522 | iframe = editor.window.getFrame(); |
523 | } catch ( e ) {} | 523 | } catch ( e ) {} |
@@ -530,7 +530,7 @@ | |||
530 | CKEDITOR.tools.removeFunction( this._.frameLoadedHandler ); | 530 | CKEDITOR.tools.removeFunction( this._.frameLoadedHandler ); |
531 | 531 | ||
532 | // On IE, iframe is returned even after remove() method is called on it. | 532 | // On IE, iframe is returned even after remove() method is called on it. |
533 | // Checking if parent is present fixes this issue. (#13850) | 533 | // Checking if parent is present fixes this issue. (http://dev.ckeditor.com/ticket/13850) |
534 | if ( iframe && iframe.getParent() ) { | 534 | if ( iframe && iframe.getParent() ) { |
535 | iframe.clearCustomData(); | 535 | iframe.clearCustomData(); |
536 | onResize = iframe.removeCustomData( 'onResize' ); | 536 | onResize = iframe.removeCustomData( 'onResize' ); |
@@ -538,7 +538,7 @@ | |||
538 | 538 | ||
539 | // IE BUG: When destroying editor DOM with the selection remains inside | 539 | // IE BUG: When destroying editor DOM with the selection remains inside |
540 | // editing area would break IE7/8's selection system, we have to put the editing | 540 | // editing area would break IE7/8's selection system, we have to put the editing |
541 | // iframe offline first. (#3812 and #5441) | 541 | // iframe offline first. (http://dev.ckeditor.com/ticket/3812 and http://dev.ckeditor.com/ticket/5441) |
542 | iframe.remove(); | 542 | iframe.remove(); |
543 | } else { | 543 | } else { |
544 | CKEDITOR.warn( 'editor-destroy-iframe' ); | 544 | CKEDITOR.warn( 'editor-destroy-iframe' ); |
@@ -593,7 +593,7 @@ | |||
593 | var css = []; | 593 | var css = []; |
594 | 594 | ||
595 | // IE>=8 stricts mode doesn't have 'contentEditable' in effect | 595 | // IE>=8 stricts mode doesn't have 'contentEditable' in effect |
596 | // on element unless it has layout. (#5562) | 596 | // on element unless it has layout. (http://dev.ckeditor.com/ticket/5562) |
597 | if ( CKEDITOR.document.$.documentMode >= 8 ) { | 597 | if ( CKEDITOR.document.$.documentMode >= 8 ) { |
598 | css.push( 'html.CSS1Compat [contenteditable=false]{min-height:0 !important}' ); | 598 | css.push( 'html.CSS1Compat [contenteditable=false]{min-height:0 !important}' ); |
599 | 599 | ||
@@ -604,14 +604,14 @@ | |||
604 | 604 | ||
605 | css.push( selectors.join( ',' ) + '{display:inline-block}' ); | 605 | css.push( selectors.join( ',' ) + '{display:inline-block}' ); |
606 | } | 606 | } |
607 | // Set the HTML style to 100% to have the text cursor in affect (#6341) | 607 | // Set the HTML style to 100% to have the text cursor in affect (http://dev.ckeditor.com/ticket/6341) |
608 | else if ( CKEDITOR.env.gecko ) { | 608 | else if ( CKEDITOR.env.gecko ) { |
609 | css.push( 'html{height:100% !important}' ); | 609 | css.push( 'html{height:100% !important}' ); |
610 | css.push( 'img:-moz-broken{-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}' ); | 610 | css.push( 'img:-moz-broken{-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}' ); |
611 | } | 611 | } |
612 | 612 | ||
613 | // #6341: The text cursor must be set on the editor area. | 613 | // http://dev.ckeditor.com/ticket/6341: The text cursor must be set on the editor area. |
614 | // #6632: Avoid having "text" shape of cursor in IE7 scrollbars. | 614 | // http://dev.ckeditor.com/ticket/6632: Avoid having "text" shape of cursor in IE7 scrollbars. |
615 | css.push( 'html{cursor:text;*cursor:auto}' ); | 615 | css.push( 'html{cursor:text;*cursor:auto}' ); |
616 | 616 | ||
617 | // Use correct cursor for these elements | 617 | // Use correct cursor for these elements |