我正试图在我的一个CKEditor插件中做这个小东西:
onOk:function(){
var sInsert=this.getValueOf('info','insertcode_area');
if ( sInsert.length > 0 ) {
regex = new RegExp('(?<=\?v=)([-a-zA-Z0-9_-]+)', 'gi');
url = 'http://www.youtube.com/v/'+sInsert.match(regex);
sInsert = '<object type="application/x-shockwave-flash" data="'+url+'" width="425" height="350"><param name="movie" value="'+url+'" /><a href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash&promoid=BIOW" target="blank"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get flash player to play to this file" width="88" height="31" /></a><br /></object>';
e.insertHtml(sInsert);
}
}
Run Code Online (Sandbox Code Playgroud)
它应该做什么:将YouTube的视频代码与输入的URL匹配,然后将其连接并连接到我的url字符串,以便URL有效且可嵌入.
但我目前收到此错误:
invalid quantifier ?<=?v=)([-a-zA-Z0-9_-]+)
Run Code Online (Sandbox Code Playgroud)
所以我认为这是一个正常的错误,因为我不经常使用正则表达式,也许我从未见过这一个:)所以,如果有人能帮助我,那将是伟大的:)
谢谢!
我已经丢失了可以与ckeditor集成的免费文件浏览器的链接.它的编号为'4',.NET标题中用PHP编写.
有谁知道这个程序的名称?
在JavaScript(或CKEditor)中是否有一种方法可以检测何时从CKEditor中删除图像.我需要一个与图像一起插入的标题元素,但是一旦删除图像,标题也应该被删除.
任何帮助将不胜感激.
我正在尝试在我的网络表单中实现textarea和ckeditor之间的切换开关切换.截至目前,我能够在2位编辑之间切换.但我无法在两个编辑器中拥有相同的内容.它像2个单独的textarea一样对待它,当我从textarea切换到ckeditor时,我希望它们具有相同的内容.任何人都可以帮助我并且知道我缺少什么?
提前致谢
码:
<textarea id="editor1" name="editor1" class="ckeditor" rows="20" cols="75"></textarea>
<input type="button" value="CKEditor" onclick="CKEDITOR.replace('editor1');" />
<input type="button" value="Text editor" onclick="CKEDITOR.instances.editor1.destroy('editor1');" />
<input type="submit" value="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud) 我想在默认创建的表中添加一个名为"table"的类.我还想从ckeditor的表格对话框中更改边框的值.我遇到了大麻烦.
美好的一天.
在我的代码中我有行<ul class="myclass">但在CKEDITOR上复制之后我有<ul>没有类的行myclass.
请告诉我如何禁用元素ul,li和div的过滤器代码?
http://gw.ablueman.co.uk/tabbednotepad.php
我有3个ckeditor文本区域,这三个区域都是相同的,但与主要类别或班级有很大不同。
如果我放3个替换,效果很好。但是,如果我尝试使用CKEDITOR.replace('editor1','editor2','editor3'{
它可以代替它们,但可以正常工作,而忽略{之后的任何内容,几乎就像该类一样。
我只是在格式化CKEDITOR.replace('editor1','editor2',{}); 错误地,我需要所有三个使用相同的替换。
这是代码:
<form name="title" method="post" action="<?php echo htmlentities($_SERVER['PHP_SELF']);?>">
<textarea class="ckeditor" id="editor3" name="editor3" rows="200"><?php echo $editor3;?></textarea>
<input id="tabtitle1" name="tabtitle1" size="30" placeholder="Tab Title.." />
<input type="submit" value="Submit" >
</form>
<script type="text/javascript">
CKEDITOR.replace( 'editor1', {
height: '600px',
enterMode: CKEDITOR.ENTER_BR,
toolbar:
[ { name: 'document', groups: [ 'document', 'doctools' ], items: [ 'Save', 'NewPage', 'Preview', 'Print', '-', 'Templates' ] },
{ name: 'clipboard', groups: [ 'clipboard', 'undo' ], items: [ 'Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo' ] …Run Code Online (Sandbox Code Playgroud) 我正在玩CKEDitor5,我试图创建一个自定义数据处理器.我想在toData转换中使用该模型,但是使用该view/DocumentFragment对象调用该方法.所以我的问题是如何将其转换为model/DocumentFragment对象(或如何从数据处理器访问模型).
更新(因为它不适合评论):让我试着更详细地解释我到底尝试做什么(或者我已经做到目前为止).我想出了如何使用访问模型本身,但这似乎是一个糟糕的解决方案,因为你也指出了它.
所以基本上我想创建一个DataProcessor将编辑器数据转换为BBCode,这听起来很合理.
一方面,该toView方法很简单,因为可以假设BBCode到HTML的转换已经实现(在我的例子中).从HTML中加载编辑器数据似乎是微不足道的(通过Markdown处理器使用的相同过程).
另一方面,从模型数据而不是视图转换为BBCode似乎更容易.主要是因为view/DocumentFragment视图树的对象和其余部分几乎只是DOM或HTML的另一种表示形式.我真的不关心粗体是否<b>或<strong>我只是想知道text节点是否具有该bold属性.
通过使用该模型,我希望使用语义而不是HTML中使用的表示.基本上将所有HTML标签映射到他们的BBCode等价物似乎有点无意义(即使CKE5在提供一致的HTML标签方面做得很好).所以从我的角度来看,使用模型更有意义.从语义表示转换为"数据格式"比转换为"数据格式"(视图树,DOM,HTML,摩尔斯电码)然后在此之后创建"表示图"更容易.
很长一段时间阻止我们使用RTE或WYSIWYG编辑器的确是从HTML转换为BBCode的难度.现在CKE5有了模型,它似乎很容易转换成任何东西,因为它不仅是HTML格式的独立,而是编辑器中显示的HTML(这不能说是视图树,因为它完全是HTML中的编辑 - 至少它不是满足任何可能产生的,但仍然不够好).
另外:我只是Plugin设置了一个DataProcessor,因为这就是Markdown特性所做的那样(在某个地方的文档中).这是个坏主意吗?
再次感谢您的回答.
在CKEditor5中,我尝试实现自定义元素以将模型转换为视图以进行编辑.然后,容器元素(@ ckeditor/ckeditor5-engine/src/view/containerelement)中的可编辑元素(@ ckeditor/ckeditor5-engine/src/view/editableelement)专注于父容器元素,无法编辑.
例如,如果实现如下:
buildModelConverter().for(editing.modelToView)
.fromElement('myElement')
.toElement(new ContainerElement('div', {}, [new EditableElement('h4')]));
Run Code Online (Sandbox Code Playgroud)
插入'myElement'和keydown"abc"后实际编辑dom的结果.(我希望将"abc"的文本输入到h4标签但是...)
<div>???????
abc
<h4>
<br data-cke-filler="true">
</h4>
</div>
Run Code Online (Sandbox Code Playgroud)
我也尝试使用widget来应用contenteditable属性.但是,无法在h4中输入文本.
<div class="ck-widget" contenteditable="false">???????
<h4 class="ck-editable" contenteditable="true">
<br data-cke-filler="true">
</h4>
</div>
Run Code Online (Sandbox Code Playgroud)
是这个错误,还是我对容器元素的理解有误?
[额外细节]
我假设为排名列表制作一个小部件插件.
首先,由于具有多个项目,排名列表由<ol>和<li>标签构成.我通过定义两个模式(例如"rankingList"和"rankingListItem")来解决这个问题,因此我使用嵌套模型元素实现了动态元素.
const item1 = new ModelElement('rankingListItem');
const item2 = new ModelElement('rankingListItem');
const model = new ModelElement('rankingList', {}, [item1, item2]);
// and insert
Run Code Online (Sandbox Code Playgroud)
接下来,排名列表的项目具有链接,图像,标题和注释.因此,排名列表项具有以下DOM结构:
<ol><!-- apply toWidget -->
<li>
<a href="link[editable]">
<img src="image[editable]">
<h3>title[editable]</h3>
<p>notes[editable]</p>
</a>
</li>
...
</ol>
Run Code Online (Sandbox Code Playgroud)
我希望view元素如下:
const {ref, src, title, …Run Code Online (Sandbox Code Playgroud)