1

我有一个自定义 youtube 插件,可以将图像添加到我的 tinyMCE 编辑器中,并在服务器端被嵌入或其他代码替换。

剩下的唯一一件事是当我在编辑器中选择图像时,advImage 图标和我的插件图标都设置为活动状态。我想将 advimage 设置为非活动。我试过这样的东西:

 cm.setActive('image', false);

感谢Thariama(见下面的答案)我知道正确的名字应该是'image'。这是从我的 youtube 插件editor_plugin.js文件中调用的,在控制台中,我可以看到在选择图像时执行代码并且image是正确的目标。

如何将图像插件设置为非活动?

有关更多信息,请参阅 Thariama 答案下方的评论。

4

2 回答 2

2

我将演示在 html 按钮(代码插件)上停用按钮/控件的正确方法

var cm = tinymce.get('my_editor_id').controlManager;
cm.get('code').setActive(0); // get the control named 'code'

要找出可用的控件,您可以将其记录到控制台

console.log(cm.controls);
于 2012-08-28T12:42:20.077 回答
0

在此之后,我让它暂时搁置了一段时间,因为它不在我的优先级列表中。现在它是我列表中的最后一件事,并且由于使用了 tinyMCE 和它的代码,我很快找到了解决方案。

我认为我需要转到根目录:editor_template.js。这是图像被设置为活动的,所以我需要改变它。

我的 youtube 图像(现在也是 vimeo)有一个 alt 属性来告诉我它是 youtube 还是 vimeo 视频。现在我还需要禁用其中一个插件。

我把它放在这段代码之后的第 1117 行(它为所有 img 标签设置了活动状态。

p = getParent('IMG');
if (c = cm.get('image'))
    c.setActive(!co && !!p && n.className.indexOf('mceItem') == -1);

我的代码:

if(ed.selection.getNode())
            if(ed.selection.getNode().getAttribute('alt') === 'videoYoutube' || ed.selection.getNode().getAttribute('alt') === 'videoVimeo') // Get the current selection in the editor and compare
            {
                cm.setDisabled('image', true); // Change disable state
                cm.setActive('image', false); // Change active state state
            }
            else
            {
                cm.setDisabled('image', false);
            }
            if(ed.selection.getNode().getAttribute('alt') === 'videoYoutube')
            {
                cm.setDisabled('addvimeo', true);
            }
            else if(ed.selection.getNode().getAttribute('alt') === 'videoVimeo')
            {
                cm.setDisabled('addyoutube', true);
            }
            else
            {
                cm.setDisabled('addvimeo', false);
                cm.setDisabled('addyoutube', false);
            }
于 2012-10-24T12:42:29.200 回答