Widgets im WYSIWYG-Editor können nicht mehr bearbeitet werden

8

In letzter Zeit funktioniert das Bearbeiten von Widgets im WYSIWYG-Editor nicht mehr.

Die Browserkonsole zeigt den folgenden Fehler an, wenn ich auf ein Widget klicke:

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)

Das Popup zum Erstellen eines neuen Widgets wird anstelle des Popups zum Bearbeiten des vorhandenen Widgets angezeigt.

Ich habe das Verhalten auf verschiedenen Versionen von Magento CE 1.x und EE 1.x in Chrome gefunden, unabhängig vom Betriebssystem. Kann es mit dem aktuellen Sicherheitspatch SUPEE-9767 zusammenhängen?

Fabian Schmengler
quelle

Antworten:

10

Anscheinend hängt es nicht mit dem Patch zusammen, sondern mit dem neuesten Chrome-Update ( Chrome 58 ), das ungefähr zur gleichen Zeit eingeführt wurde. TinyMCE verwendet veraltete Funktionen, die in dieser Version entfernt wurden.

Magento 2.0 und 2.1 sind ebenfalls betroffen (siehe: https://github.com/magento/magento2/issues/9518 )

Es scheint ein Problem mit Bildern im Allgemeinen zu sein. Hier ist ein verwandtes Problem im TinyMCE-Projekt: https://github.com/tinymce/tinymce/issues/3611 TinyMCE 4.6 behebt das Problem.

Jetzt haben Sie folgende Möglichkeiten:

  • Ersetzen Sie die mitgelieferte TinyMCE-Version durch 4.6 oder neuer
  • Warten Sie, bis Magento einen Patch veröffentlicht, der TinyMCE aktualisiert, und verwenden Sie bis dahin andere Browser (derzeit scheint nur Chrome ein Problem zu sein), und hoffen Sie, dass die veralteten Funktionen nicht so bald entfernt werden.
Fabian Schmengler
quelle
Vielen Dank für die detaillierte Recherche, ich war faul darüber ^^
Raphael bei Digital Pianism
3

Eine schnelle Lösung, die ich angewendet habe, war das Überschreiben der JS-Datei tiny_mce mit meiner eigenen gepatchten Version.

        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') {

Für einen faulen Hack. Markieren Sie das Bild mit dem Cursor (als würden Sie Text auswählen). Einmal markiert, ist es anklickbar.

TylersSN
quelle
2

Danke, TylerSN

In meinem Fall sah der Code, der entfernt werden musste, folgendermaßen aus:

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

Bitte beachten Sie : Es war eine Originalversion von tiny_mce (v3.5.4, 06.09.2011), keine Magento-Gunst . Ich bin jedoch bei der Suche auf diese Frage gestoßen Uncaught DOMException: Failed to execute 'setBaseAndExtent' on 'Selection': There is no child at offset 1. at Editor.<anonymous>und wollte die Lösung für die Referenz anderer Personen hinzufügen. Hoffe, dass das etwas "Off-Topic" unter diesen Umständen entschuldigt werden kann.

Martin Rüegg
quelle