CKEditor JS API插入内部文件链接(MediaWiki所见即所得扩展)
CKEditor JS API insert internal file link (MediaWiki WYSIWYG extension)
我想使用CKEditor的Javascript API插入一个内部文件链接到正在编辑的文本。(与点击链接图标并选择"到图像或文件的内部链接"相同)
我尝试使用insertText和insertHtml,问题是特殊字符([,]等)被转义。
var inst = CKEDITOR.instances.wpTextbox1;
inst.insertText('[[:File:'+file.name+']]');
inst.insertHtml('[[:File:'+file.name+']]', '', '', '' );
我试过切换编辑器的模式,但似乎insertText和inserthhtml只在所见即所得模式下工作。
var inst = CKEDITOR.instances.wpTextbox1;
var oldmode = inst.mode;
inst.mode = 'source';
inst.insertText('[[:File:'+file.name+']]');
inst.insertHtml('[[:File:'+file.name+']]', '', '', '' );
inst.mode = oldmode;
"链接"按钮实际上是怎么做的?
如果链接按钮可以做到,我相信我也应该这样做,使用JS API…
好吧,这个问题的层次比我最初想象的要多。
我也忘了说这是CKEditor包含在WYSIWYG扩展MediaWiki。
所以我们有
- MediaWiki及其API (webservice)
- CKEditor(作为MediaWiki扩展)及其JS API
- CKEditor插件(就像Mediawiki使用扩展,CKEditor可以有插件)
现在,当你在CKEditor的所见即所得模式下,你基本上是在后台创建HTML。当保存(或切换到源模式)时,CKEditor将其翻译为wikittext。
所以,例如,如果你喜欢最终的Wiki文档包含一个图像,你想通过CKEditor JS API添加它,你必须使用insertHtml()
:
insertHtml('<img src="" _fck_mw_filename="x"');
这里的关键是CKEditor使用的特殊属性_fck_mw_filename
。(在PATH_TO_MEDIAWIKI/extensions/WYSIWYG/ckeditor/_source/plugins/mediawiki/plugin.js中找到)
使用这个属性告诉CKEditor生成适当的wikittext
[[File:x]]
(x需要是文件的规范名称)
所以这里的答案是:您不能将wikittext写入WYSIWYG编辑器中,您必须编写WYSIWYG编辑器期望的内容,以便随后生成正确的wikittext。
还有更多,但超出了这个答案的范围。
实际上,对于插入图像的初始显示,您需要设置src
属性。
但是,不能设置绝对URL。您要么必须临时插入base64编码的图像(就像复制/粘贴时一样),要么插入一个本地链接(以/images/a/b/image.png
的形式)。否则(使用完整的URL),它将创建一个链接到外部URL(即使它是内部的),而不显示图像本身。
最后,上传图像本身是一个完全不同的任务,您必须创建一个可以使用XMLHttpRequest触发的上传脚本,例如,为了使用MediaWiki的API来执行上传(仅仅放入文件系统是不够的,因为它也必须在数据库中等等)显然,图像必须在能够在这里引用它之前已经上传。
- 基于Jquery的所见即所得,具有直播的可能性
- 代理一个网站能够在iframe中进行所见即所得编辑-它是如何工作的
- 使用PageMod将所有文本框转换为所见即所得HTML编辑器
- JavaScript:将所见即所得编辑器对实时站点的更改转换为jQuery操作
- 所见即所得编辑器适用于速度模板
- 输入法所见即所得编辑器不在mysql数据库中存储值
- 使用SCEditor(所见即所得BBCode)时无法验证空字段
- 如何使用我自己的所见即所得编辑器插入图像
- 所见即所得内容中的撤消和重做SWT中的可编辑内容;不起作用
- 如何在execCommand所见即所得编辑器中查找选定的文本字体大小和名称
- Meteor/Iron路由器-何时何地运行JS以交换到所见即所得
- 使用MathJax的数学方程所见即所得编辑器
- 如何制作一个非常基本的所见即所得
- 所见即所得,没有 HTML 标记
- Javascript - 在将标签环绕后重新选择文本不起作用?所见即所得
- Javascript:在所见即所得编辑器中的插入符号处粘贴文本
- Eclipse Web Development - 安装哪些插件以及如何获取 Dojo, Ajax - 所见即所得开发
- 使用 strip_tags() 和 preg_replace() 显示所见即所得/TinyMCE 文本编辑器中输入的文本
- 所见即所得的 XML 编辑器 Web 应用程序
- CKEditor JS API插入内部文件链接(MediaWiki所见即所得扩展)