【发布时间】:2012-02-05 07:19:18
【问题描述】:
我正在使用 javascript 和可编辑的 iframe 开发一个所见即所得的 HTML 编辑器。在开发编辑器之前,我对其他使用 javascript 和 iframe 的 HTML 编辑器(包括 CKEditor)进行了一些研究,其中有一个功能我正在努力复制。
在一些基于 iframe/JS 的 HTML 编辑器中,如果用户希望访问或编辑元素的属性(例如图像尺寸、超链接 url、表格宽度),他们只需双击该元素,就会出现一个模态 div包含该元素的属性值和/或该元素中的元素的属性值的文本框。
到目前为止,我最接近开发此类功能的方法是创建一个脚本,该脚本会提醒用户双击 iframe 中某个区域的 HTML 代码。我将此代码添加到我的 HTML 页面;
<iframe name="wysiwyg" id="wysiwyg" onload="dblClick();"></iframe>
并将此代码添加到我的 javascript 文件中;
function dblClick(){
document.getElementById("wysiwyg").contentWindow.document.ondblclick=dblClicked;
window.frames["wysiwyg"].document.body.ondblclick=dblClicked;
}
function dblClicked (){
txt = wysiwyg.document.selection.createRange().htmlText;
alert(txt);
}
问题是这段代码只有在用户双击并突出显示一段文本时才有效,例如,双击选定的粗体文本会提醒用户这段代码;
<b>text</b>
我双击的任何其他内容都会提示错误消息。此外,它只能在 Internet Explorer 中正常工作。当我在 Firefox、Opera、Chrome 和 Safari 中对其进行测试时,该脚本要么无法运行,要么无法正常运行(在 Firefox 中,该脚本会在页面加载后立即提示错误消息)。
我需要的是一个脚本,它允许最终用户查看他们在可编辑 iframe 中双击的任何元素的所有属性,并且可以在所有主流浏览器中使用。
我知道简单地使用现有的所见即所得编辑器会更容易,但我更喜欢从头开始创建自己的编辑器,因为我喜欢挑战。另外,我知道 CKEditor 似乎没有像我一样使用 iframe,但我将其作为我希望实现的功能的示例。
任何帮助将不胜感激。
【问题讨论】:
标签: javascript html iframe wysiwyg