Non è più possibile modificare i widget nell'editor WYSIWYG


8

Di recente, la modifica dei widget nell'editor WYSIWYG non funziona più.

La console del browser mostra il seguente errore quando faccio clic su un widget:

Uncaught DOMException: Failed to execute 'setBaseAndExtent' on 'Selection': There is no child at offset 1.
    at Editor.<anonymous> (http://example.com/js/tiny_mce/tiny_mce.js:1:15327)
    at Dispatcher.dispatch (http://example.com/js/tiny_mce/tiny_mce.js:1:6000)
    at DOMUtils.c (http://example.com/js/tiny_mce/tiny_mce.js:1:184650)
    at j (http://example.com/js/tiny_mce/tiny_mce.js:1:58627)
    at HTMLDocument.y (http://example.com/js/tiny_mce/tiny_mce.js:1:58785)
(anonymous) @ tiny_mce.js:1
dispatch @ tiny_mce.js:1
c @ tiny_mce.js:1
j @ tiny_mce.js:1
y @ tiny_mce.js:1
tiny_mce.js:1 Uncaught DOMException: Failed to execute 'setBaseAndExtent' on 'Selection': There is no child at offset 1.
    at Editor.<anonymous> (http://example.com/js/tiny_mce/tiny_mce.js:1:15327)
    at Dispatcher.dispatch (http://example.com/js/tiny_mce/tiny_mce.js:1:6000)
    at DOMUtils.c (http://example.com/js/tiny_mce/tiny_mce.js:1:184650)
    at j (http://example.com/js/tiny_mce/tiny_mce.js:1:58627)
    at HTMLDocument.y (http://example.com/js/tiny_mce/tiny_mce.js:1:58785)

Viene visualizzato il popup per creare un nuovo widget, anziché quello per modificare il widget esistente.

Ho trovato il comportamento su diverse versioni di Magento CE 1.xe EE 1.x, in Chrome, indipendentemente dal sistema operativo. Può essere correlato alla recente patch di sicurezza SUPEE-9767?

Risposte:


10

Apparentemente non è correlato alla patch, ma all'ultimo aggiornamento di Chrome ( Chrome 58 ) che è stato lanciato nello stesso periodo. TinyMCE utilizza funzionalità obsolete che sono state rimosse in quella versione.

Anche Magento 2.0 e 2.1 sono interessati (vedi: https://github.com/magento/magento2/issues/9518 )

Sembra essere un problema con le immagini in generale, ecco un problema correlato nel progetto TinyMCE: https://github.com/tinymce/tinymce/issues/3611 TinyMCE 4.6 risolve il problema.

Ora hai le seguenti opzioni:

  • sostituire la versione in bundle di TinyMCE con la versione 4.6 o successiva
  • attendere che Magento rilasci una patch che aggiorni TinyMCE e fino ad allora utilizzare altri browser (attualmente solo Chrome sembra essere un problema) e sperare che non rimuovano presto le funzionalità obsolete.

Grazie per la ricerca dettagliata, ne sono stato pigro ^^
Raphael al Digital Pianism,

3

Una soluzione rapida che ho applicato è stata la sostituzione del file JS tiny_mce con la mia versione patchata.

        editor.onClick.add(function(editor, e) {
            e = e.target;

-           // Workaround for bug, http://bugs.webkit.org/show_bug.cgi?id=12250
-           // WebKit can't even do simple things like selecting an image
-           // Needs tobe the setBaseAndExtend or it will fail to select floated images
            if (/^(IMG|HR)$/.test(e.nodeName)) {
-               selection.getSel().setBaseAndExtent(e, 0, e, 1);
+               /** Removed webkit bug fix - it breaks in Chrome 58 */
+                selection.select(e);
            }

            if (e.nodeName == 'A' && dom.hasClass(e, 'mceItemAnchor') {

Per un trucco pigro. Evidenzia l'immagine con il cursore (come se stessi selezionando un testo). Una volta evidenziato, è selezionabile.


2

Grazie, TylerSN

Nel mio caso, il codice che doveva essere rimosso sembrava così:

if (tinymce.isWebKit && e.nodeName == 'IMG')
    t.selection.getSel().setBaseAndExtent(e, 0, e, 1);

Nota: era una versione tiny_mce originale (v3.5.4, 2011-09-06), non un favore di Magento . Tuttavia, mi sono imbattuto in questa domanda durante la ricerca Uncaught DOMException: Failed to execute 'setBaseAndExtent' on 'Selection': There is no child at offset 1. at Editor.<anonymous>e volevo aggiungere la soluzione per riferimento di altre persone. Spero che un po '"fuori tema" possa essere scusato in questa circostanza.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.