作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试在位于 iframe 中的 contenteditable div 上使用内联 CKEditor。我找到了一种基本上像这样工作的方法:
JavaScript
var myFrame = Document.getElementById('myIframeId');
var contenteditableElement = myFrame.contentWindow.document.getElementById('editorDivId')
CKEDITOR.inline(contenteditableElement);
但是有两个缺点:
我创建了 a fiddle to demonstrate the unwanted behaviour .
在这里您可以比较工具栏定位的行为方式:http://ckeditor.com/demo#inline
我可以做些什么来改善工具栏的定位?
最佳答案
我找到了这个解决方案:
//The inline editor should be enabled on an element with "contenteditable" attribute set to "true".
//Otherwise CKEditor will start in read-only mode.
$("#html_template").bind('load', function() {
function loadScript(url, callback)
{
// Adding the script tag to the head as suggested before
var head = this.getElementsByTagName('head')[0];
var script = this.createElement('script');
script.type = 'text/javascript';
script.src = url;
// Then bind the event to the callback function.
// There are several events for cross browser compatibility.
script.onreadystatechange = callback;
script.onload = callback;
// Fire the loading
head.appendChild(script);
}
function e(){
var alleditableElement = this.getElementsByClassName("editable");
$(alleditableElement).each(function(i,v){
v.setAttribute( 'contenteditable', true );
document.getElementById('html_template').contentWindow.CKEDITOR.inline(v,{ toolbar : [ { name: 'basicstyles', items : [ 'Bold','Italic'] }, { name: 'paragraph', items : [ 'NumberedList','BulletedList' ] } ] });
});
};
var iframedoc=document.getElementById('html_template').contentWindow.document;
iframedoc.loadScript=loadScript;
iframedoc.e=e;
iframedoc.loadScript('http://cdn.ckeditor.com/4.4.6/standard-all/ckeditor.js',function(){iframedoc.e()});
});
在文档就绪时启动此代码。
关于javascript - 如何在 iframe 中正确使用内联 CKEditor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22975526/
我是一名优秀的程序员,十分优秀!