测试,看看你是在TinyMCE的特定内容块,不允许如果它
所以,我有我的网页上TinyMCE的形式的插件添加到内容块,这是预填“部分”(具有特定类名称的div)。测试,看看你是在TinyMCE的特定内容块,不允许如果它
我有一对夫妇,将增加更多的“节”在TinyMCE插件。
我需要它,所以当我按下按钮插件,它会测试,以确保光标是不是“部分”内另有“部分”内的“节”粘贴。
不知道我需要做到这一点的方向。任何帮助都会很棒。
的详细信息: 所以下面是添加一个按钮,只是插入一个简单的DOV到在选择/光标在编辑器插件的例子。
ed.addButton('pluginbutton', {
title : 'MyPlugin',
image : 'img/test.png',
onclick : function() {
ed.selection.setContent('<div>test</div>');
}
});
我目前认为onBeforeSetContent是API事件处理程序,我需要设置处理是否我是在另一部分,如果是将消息发送到屏幕上。如果不只是执行setContent方法。我不确定如何设置,但我仍然在想这个。这里有帮助吗?
既然你好像控制了这个插件,下面是我如何编辑它的工作。
说明:我正在使用jQuery方法closest
。我想你是jQuery核心团队的成员,你可能使用它来完成这个项目。如果不是,只需根据需要重构该行。最重要的部分是selection.getNode()
返回既是起点和终点选择点的父:
ed.addButton('pluginbutton', {
title : 'MyPlugin',
image : 'img/test.png',
onclick : function() {
if(!$(ed.selection.getNode()).closest('div.section').length){
ed.selection.setContent('<div class="section">test</div>');
}
}
});
更多的想法
而且DOM元素,让你的插件足够的认识,因此深得“T把div
为p
标签的孩子,你可以做这样的事情:
这个上面的onclick替换:
onclick: function(){
var $node = $(ed.selection.getNode());
if(!$node.closest('div.section').length){
// Get highest element that is a direct child of the `body` tag:
var $parent = $node.closest('body > *');
// Wrap with our special section div
if($parent.length) $parent.wrap('<div class="section"></div>');
}
}
我不知道TinyMCE的具体,但它应该是可以从ed.selection
提取当前DOM元素。如果这是可能的(我敢肯定,它是使用某种形式的getter函数或属性),你应该能够做到以下几点:
- 马克用一个id或类(”
<div class='protected'>
一个“禁”区“) - 横移通过选择的祖先(使用元件的
parentNode
属性),并检查父元素中的一个是否具有‘受保护的’类或ID。 - 如果找到了ID,请不要执行
setContent()
;否则执行它。
+1伟大的轮廓。你是对的,'selection.getNode()'返回上下文DOM元素。 – 2010-01-10 19:46:37
偷偷摸摸的JQuery实现!尼斯。另一个共同创作功能的案例。 – 2010-01-10 19:52:28
@Pekka完全...我们真的需要建议。也许我会在本周输入它。 – 2010-01-10 20:01:34
HA我在第一个例子中已经有了类似于你的东西。 – RedWolves 2010-01-10 20:12:50