无法再在“所见即所得”编辑器中编辑窗口小部件


8

最近,在“所见即所得”编辑器中编辑小部件不再起作用。

当我单击小部件时,浏览器控制台显示以下错误:

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)

然后将显示用于创建新窗口小部件的弹出窗口,而不是用于编辑现有窗口小部件的弹出窗口。

我发现Chrome在不同版本的Magento CE 1.x和EE 1.x上均存在这种行为,与操作系统无关。它可以与最新的安全补丁SUPEE-9767相关吗?

Answers:


10

显然,它与补丁程序无关,而是与大约在同一时间推出的最新Chrome更新(Chrome 58)有关。TinyMCE使用该版本中已弃用的功能。

Magento 2.0和2.1也受到影响(请参阅:https : //github.com/magento/magento2/issues/9518

通常,图像似乎有问题,这是TinyMCE项目中的一个相关问题:https : //github.com/tinymce/tinymce/issues/3611 TinyMCE 4.6解决了该问题。

现在,您有以下选择:

  • 用4.6或更高版本替换捆绑的TinyMCE版本
  • 等到Magento发布更新TinyMCE的补丁,然后再使用其他浏览器(当前似乎只有Chrome浏览器才是问题),并希望他们不要很快删除不推荐使用的功能。

感谢您进行详细的研究,我对此一直很懒惰^^
Raphael在Digital Pianism上2013年

3

我应用的一个快速修复方法是使用自己的补丁程序版本覆盖tiny_mce JS文件。

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

对于懒惰的黑客。用光标突出显示图像(就像选择文本一样)。突出显示后,即可单击。


2

谢谢,TylerSN

就我而言,必须删除的代码如下所示:

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

请注意:这是原始的tiny_mce版本(v3.5.4,2011-09-06),不是Magento的青睐。但是,我在搜索时遇到了这个问题,Uncaught DOMException: Failed to execute 'setBaseAndExtent' on 'Selection': There is no child at offset 1. at Editor.<anonymous>并希望添加解决方案以供其他人参考。希望在这种情况下可以略微偏离主题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.