tinyMCE 4弹出工具在Colorbox灯箱中失去焦点

3
我正在尝试将我的网站迁移到tinyMCE 4,但由于版本4仍处于测试阶段,关于http://www.tinymce.com/的文档在目前还比较匮乏,所以我遇到了一些阻碍。我已经解决了大部分的问题,但这一个问题让我束手无策,我甚至不知道如何确定问题出在哪里。
我在http://ymsrunning.com/mce.php上设置了一个测试站点。您会注意到,在主页面上使用任何工具栏按钮都很好用。您可以在输入框中键入文字并且它们开始聚焦。
问题是当您点击链接打开Colorbox时,同样的工具就不再起作用了。即使弹出窗口出现,输入框也没有获得焦点,您也无法单击以输入任何内容。
tinyMCE创建了自己的输入框来匹配主题,但我无法弄清他们如何控制焦点。如果您有关于我该如何继续操作或更好的想法(更好的是能够解决问题的),请告诉我,谢谢。

等待tinymce4正式版发布,可以避免一些麻烦。 - Thariama
很好的建议。我相信他们不会忽视这个问题,因为Colorbox是一个非常流行的灯箱插件,但如果可能的话,我想自己解决它(或在这里得到帮助)。 - DRock Miller
1个回答

4
原来这不是tinyMCE的问题,而是Colorbox的问题。Colorbox阻止在其容器之外聚焦任何内容,而tinyMCE则在Colorbox容器之外创建其元素。Colorbox代码中有一个名为“trapFocus”的函数,它创建了这种行为。以下是该代码。
function trapFocus(e) {
if ('contains' in $box[0] && !$box[0].contains(e.target)) {
        e.stopPropagation();
        $box.focus();
    }
}

将函数内部的内容注释掉,但不要注释掉函数本身,这样可以让元素保留并接受焦点,并且可以防止Colorbox对其进行干扰。我希望这对遇到此问题的其他人有所帮助。


哦,天哪!太聪明了!这可能为我节省了数天的头痛!感谢您的发现!我会通知Colorbox的开发人员的 :-) - Simon Steinberger
实际上,通过删除整个函数,我会得到一些奇怪的点击穿透问题,导致在打开颜色框时浏览器向下滚动。然而,当仅从colorbox的trapFocus函数中删除"$ box.focus();"时,它目前可以正常运行。 - Simon Steinberger
这就是为什么我说要删除函数的“内容”,但似乎删除“$box.focus();”这一行也可以。 - DRock Miller
我已经删除了这个内容,但是对于colorbox来说,这个功能确实也很有意义...因此删除它的功能并不是一个完美的解决方案。 - Simon Steinberger
3
哈哈,事实证明,这个功能对于Colorbox来说是相当新的,只需要在调用Colorbox时设置“trapFocus: false”就可以轻松关闭它 :-) 因此,不需要进行任何修补 :) https://github.com/jackmoore/colorbox/commit/b357a79ff44d21b60b5ce42fcedfd85b01a5de64 - Simon Steinberger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接