Javascript 在编辑器中获取选定的html
我正在开发一个自定义的链接生成器。我想做的是获取用户选择的html。我尝试了很多东西,最后一个功能是Javascript 在编辑器中获取选定的html,javascript,html,ckeditor,wysiwyg,Javascript,Html,Ckeditor,Wysiwyg,我正在开发一个自定义的链接生成器。我想做的是获取用户选择的html。我尝试了很多东西,最后一个功能是 function getTheHtml(editor) { var selection = editor.getSelection(); if (selection.getType() == CKEDITOR.SELECTION_ELEMENT) { var selectedContent = selection.getSelectedElement().$.ou
function getTheHtml(editor) {
var selection = editor.getSelection();
if (selection.getType() == CKEDITOR.SELECTION_ELEMENT) {
var selectedContent = selection.getSelectedElement().$.outerHTML;
} else if (selection.getType() == CKEDITOR.SELECTION_TEXT) {
if (CKEDITOR.env.ie) {
selection.unlock(true);
selectedContent = selection.getNative().createRange().text;
} else {
selectedContent = selection.getNative();
}
}
return selectedContent;
}
这工作得很好,但我仍然有问题,如果用户选择文本它工作,如果他选择一个图像它工作,但当用户选择一个图像加上一些文本,我只得到文本的例子,这是用户真正选择的
<img align="" alt="" border="0" class="donotlink" hspace="5" src="image/pic.jpg" vspace="5" />Some Random Text
我也试着这样做:
function getSelectionHtml(editor) {
var sel = editor.getSelection();
var ranges = sel.getRanges();
var el = new CKEDITOR.dom.element("div");
for (var i = 0, len = ranges.length; i < len; ++i) {
el.append(ranges[i].cloneContents());
}
return el.getHtml();
}
函数getSelectionHtml(编辑器){
var sel=editor.getSelection();
var ranges=sel.getRanges();
var el=新的CKEDITOR.dom.element(“div”);
对于(变量i=0,len=ranges.length;ivar editor = CKEDITOR.instances.editor1,
range = editor.getSelection().getRanges()[ 0 ],
el = editor.document.createElement( 'div' );
el.append( range.cloneContents() );
console.log( el.getHtml() );
它同时适用于图像和文本
var selection = CKEDITOR.instances.getSelection();
if (selection.getType() == CKEDITOR.SELECTION_ELEMENT) {
var selectedContent = selection.getSelectedElement().$.outerHTML;
} else if (selection.getType() == CKEDITOR.SELECTION_TEXT) {
if (CKEDITOR.env.ie) {
selection.unlock(true);
selectedContent = selection.getNative().createRange().text;
} else {
selectedContent = selection.getNative();
console.log("The selectedContent is: " + selectedContent);
}
}
非常感谢Oleq,但是我尝试了这个,问题是我丢失了用户的选择(当调用cloneContents()时),所以当我想调用insertHtml函数时,我最终删除了新选择的一些部分。(因为我用我的链接包装了第一个选择)使用入侵,然后恢复它()。我知道说仅仅是坦克有点违反规则,但是,非常感谢你,oleq,你又让我开心了一天。它很有魅力
var selection = CKEDITOR.instances.getSelection();
if (selection.getType() == CKEDITOR.SELECTION_ELEMENT) {
var selectedContent = selection.getSelectedElement().$.outerHTML;
} else if (selection.getType() == CKEDITOR.SELECTION_TEXT) {
if (CKEDITOR.env.ie) {
selection.unlock(true);
selectedContent = selection.getNative().createRange().text;
} else {
selectedContent = selection.getNative();
console.log("The selectedContent is: " + selectedContent);
}
}