execCommand方法是执行一个对当前文档,当前选择或者给出范围的命令。处理Html数据时常用,
如下格式:document.execCommand(sCommand[,交互方式, 动态参数]) ,其中:sCommand为指令参数,交互方式参数如果是true的话将显示对话框,如果为false的话,则不显示对话框,动态参数一般为一可用值或属性值
JavaScript execCommand用法举例
2D-Position 允许通过拖曳移动绝对定位的对象。
AbsolutePosition 设定元素的 position 属性为“absolute”(绝对)。
BackColor 设置或获取当前选中区的背景颜色。
BlockDirLTR 目前尚未支持。
BlockDirRTL 目前尚未支持。
Bold 切换当前选中区的粗体显示与否。
BrowseMode 目前尚未支持。
Copy 将当前选中区复制到剪贴板。
CreateBookmark 创建一个书签锚或获取当前选中区或插入点的书签锚的名称。
CreateLink 在当前选中区上插入超级链接,或显示一个对话框允许用户指定要为当前选中区插入的超级链接的 URL。
Cut 将当前选中区复制到剪贴板并删除之。
Delete 删除当前选中区。
DirLTR 目前尚未支持。
DirRTL 目前尚未支持。
EditMode 目前尚未支持。
FontName 设置或获取当前选中区的字体。
FontSize 设置或获取当前选中区的字体大小。
ForeColor 设置或获取当前选中区的前景(文本)颜色。
FormatBlock 设置当前块格式化标签。
Indent 增加选中文本的缩进。
InlineDirLTR 目前尚未支持。
InlineDirRTL 目前尚未支持。
InsertButton 用按钮控件覆盖当前选中区。
InsertFieldset 用方框覆盖当前选中区。
InsertHorizontalRule 用水平线覆盖当前选中区。
InsertIFrame 用内嵌框架覆盖当前选中区。
InsertImage 用图像覆盖当前选中区。
InsertInputButton 用按钮控件覆盖当前选中区。
InsertInputCheckbox 用复选框控件覆盖当前选中区。
InsertInputFileUpload 用文件上载控件覆盖当前选中区。
InsertInputHidden 插入隐藏控件覆盖当前选中区。
InsertInputImage 用图像控件覆盖当前选中区。
InsertInputPassword 用密码控件覆盖当前选中区。
InsertInputRadio 用单选钮控件覆盖当前选中区。
InsertInputReset 用重置控件覆盖当前选中区。
InsertInputSubmit 用提交控件覆盖当前选中区。
InsertInputText 用文本控件覆盖当前选中区。
InsertMarquee 用空字幕覆盖当前选中区。
InsertOrderedList 切换当前选中区是编号列表还是常规格式化块。
InsertParagraph 用换行覆盖当前选中区。
InsertSelectDropdown 用下拉框控件覆盖当前选中区。
InsertSelectListbox 用列表框控件覆盖当前选中区。
InsertTextArea 用多行文本输入控件覆盖当前选中区。
InsertUnorderedList 切换当前选中区是项目符号列表还是常规格式化块。
Italic 切换当前选中区斜体显示与否。
JustifyCenter 将当前选中区在所在格式化块置中。
JustifyFull 目前尚未支持。
JustifyLeft 将当前选中区所在格式化块左对齐。
JustifyNone 目前尚未支持。
JustifyRight 将当前选中区所在格式化块右对齐。
LiveResize 迫使 MSHTML 编辑器在缩放或移动过程中持续更新元素外观,而不是只在移动或缩放完成后更新。
MultipleSelection 允许当用户按住 Shift 或 Ctrl 键时一次选中多于一个站点可选元素。
Open 打开。
Outdent 减少选中区所在格式化块的缩进。
OverWrite 切换文本状态的插入和覆盖。
Paste 用剪贴板内容覆盖当前选中区。
PlayImage 目前尚未支持。
Print 打开打印对话框以便用户可以打印当前页。
Redo 重做。
Refresh 刷新当前文档。
RemoveFormat 从当前选中区中删除格式化标签。
RemoveParaFormat 目前尚未支持。
SaveAs 将当前 Web 页面保存为文件。
SelectAll 选中整个文档。
SizeToControl 目前尚未支持。
SizeToControlHeight 目前尚未支持。
SizeToControlWidth 目前尚未支持。
Stop 停止。
StopImage 目前尚未支持。
StrikeThrough 目前尚未支持。
Subscript 目前尚未支持。
Superscript 目前尚未支持。
UnBookmark 从当前选中区中删除全部书签。
Underline 切换当前选中区的下划线显示与否。
Undo 撤消。
Unlink 从当前选中区中删除全部超级链接。
Unselect 清除当前选中区的选中状态。
富文本编辑器实现关键技术pasteHTML-InsertHTML
2009-05-16 02:32
先简要介绍一下HTML富文本编辑器实现原理,如果是非所见即所得,那么用 textarea就可以搞定了,如果要实现所见即所得,尤其是你想插入图片之类的,那么就要考虑用其他方式来替换 textarea了,毕竟textarea不能实现“实时预览”。
目前发布的HTML富文本编辑器比如:FCKeditor, TinyMCE等,实现方法基本上都是基于iframe
,在IE浏览器下的标签有一个 contentEditable属性,设置其值为 true就可以实现对其内部元素编辑了,例如 <div contentEditable="true">123</div> 或者 <p contentEditable="true">dds</p>
按照网上的说法是不支持Firefox的,不过我测试了一下,很不幸,Firefox下也可以用的,而且不仅如此,我测试了一下,连 safari 4.0 , Opera9.6 , google chrome , Firefox 3.10 都可以用,有可能是这些高版本的浏览器才加入的吧?或许早期的Firefox不支持呢? 这个就不知道了,不过,建议那些写技术博客的同仁们,如果自己没有经过测试,最好写清楚了,不要总把别人的博客粘来粘去,即使粘过来,自己也要测试一下!
如果要自己实现一个简单的HTML富文本编辑器,用系统自带的 execCommand(); 来修改,
这是document的一个方法,最先由IE实现,Firefox以及后来的浏览器都支持这个方法了。
尽管如此,这个方法在IE和FF下调用的参数和产生的结果并不一样!
详情请参考execCommand();在IE和FF下的详细参数,
好,切入正题,我们最想做的是什么?
第一步把一个iframe变为可写模式
第二步,在当前光标处插入内容!
有了这两步,就可以实现一个功能不错的编辑器了,我们也无须去考虑复杂的execCommand(); 参数了,
比如你要想把字体加大:只要插入一段 <p style="font-size:24px;">sddsds</p>就可以了
如果要插入一张图片: <img src=""/>代码既规范又简洁!
<iframe src="" frameborder="0" name="editor" id="editor" width="400" height="200" style="border:1px solid #ccc;"></iframe>
这是一个iframe ,
现在我们用js来修改使得其 document.designMode 为 "On" ,默认为"Off",这样就打开了 iframe 的可写模式
下面借助JQuery来实现,如果您没有JQuery,可能要另做判断了,因为不同的浏览器 要获取 iframe的document并不相同!
<script>
_win=$('#editor')[0].contentWindow; // 我们用 _win 变量代替 iframe window
_doc=_win.document; // 用 _doc 变量代替 iframe的document
_doc.designMode = 'On';
</script>
测试一下吧!,看看是不是可写了呢?
以上的代码并没有判断不同的浏览器,按照网上流传的说法:对于IE要用 : _doc.contentEditable='true'; 来设置。而我测试了,并不需要,只要上面的代码就可以运行了!
测试浏览器: IE6,7,8 Firefox3.10,Opera9.6, Safari 4.0 , google chrome 好,一般我们在打开可写模式后通常要写点东西进去比如 _doc.write('<html><body></body></html>');
下面的代码在IE6下报告没有权限,不知道是不是我哪里设置的不对,open()和close()函数报告没有权限,其他浏览器都正常,如果FF下没有这两个函数,会显示浏览器一直处于刷新状态而IE不会,所以如果没有办法的话可以试着用代码判断一下:
if( $.browser.msie ){
_doc.write('<img src="ui/images/info.gif"/> <h1>haha</h1>');
}else{
_doc.open();
_doc.write('<img src="ui/images/info.gif"/> <h1>haha</h1>');
_doc.close();
}
不知道有没有可能是我的浏览器问题!
$.browser.msie这是Jquery用来检测浏览器是否为IE!
好,下面来实现最最关键的技术:
在当前的光标处插入HTML代码:
非IE等浏览器支持 _doc.execCommand('InsertHtml','',html); 第一个参数为:'InsertHtml' 第二个参数留空,第三个参数为插入的值
而IE不支持这个方法,但是IE支持 _doc.selection.createRange().pasteHTML(html); 方法
所以下面来实现:
function insertHTML( sHtml )
{
_win.focus();
if( $.browser.msie ){
_doc.selection.createRange().pasteHTML( sHtml ) ;
}else{
_doc.execCommand( 'InsertHtml' , '' , sHtml );
}
}
_win.focus(); // 这一句很关键,如果当前的焦点不在 iframe上面,插入的时候就会插到页面里!而不是iframe里面,至于为什么,还没研究明白!因为_doc明明是iframe的!实在想不通!
好,有了这个方法,下面要实现什么就畅通无阻了!
比如插入一个图片: insertHTML( '<img src="example.png" />' );
分享到:
相关推荐
### document.execCommand()详解 `document.execCommand()`是HTML文档对象模型(DOM)中的一个方法,用于执行浏览器的编辑命令,这些命令可以控制文本样式、布局、剪贴板操作等。此方法在早期的Web开发中被广泛使用...
《document.execCommand()解析》 在前端开发中,我们经常需要与用户进行交互,比如编辑文本、复制粘贴等操作。这些操作在浏览器环境中可以通过`document.execCommand()`方法实现。这个函数是HTML5引入的一个非常...
传统的做法是使用`document.execCommand('saveAs')`方法,但这个方法在某些现代浏览器中已被废弃,因此需要寻找替代方案。本篇文章将详细探讨如何在不依赖`execCommand('saveAs')`的情况下,实现HTML内容直接下载到...
以下是一些`document.execCommand()`支持的常用命令及其作用的详细解释: - `Bold`:切换当前选中文本的粗体属性。 - `Italic`:切换当前选中文本的斜体属性。 - `Underline`:切换当前选中文本的下划线属性。 - `...
为了解决这个问题,Erik发现了一个简单的方法,利用`document.execCommand`这个命令,结合特定的参数,可以强制IE6缓存背景图片。具体代码如下: ```javascript document.execCommand("BackgroundImageCache", ...
2D-Position 允许通过拖曳移动绝对定位的对象。 AbsolutePosition 设定元素的 position 属性为“absolute”(绝对)。 BackColor 设置或获取当前选中区的背景颜色。 BlockDirLTR 目前尚未支持。...
`document.execCommand()` 是一个在浏览器的文档对象模型(DOM)中用于执行各种富文本编辑操作的方法。这个方法主要用于在内容可编辑区域(比如 `<contenteditable>` 标签或者富文本编辑器)中进行文本格式化、插入...
`document`对象还包含事件处理,如`document.addEventListener`用于注册事件监听器,以及`document.execCommand`用于执行某些富文本编辑操作。可能还会涉及`document.readyState`,它表示文档加载状态,以及`...
通过创建一个新的空白窗口,将需要保存的内容写入到这个窗口的document中,并执行execCommand("SaveAs")来触发保存动作。如果浏览器支持,这将保存文件到本地。 然而,由于现代浏览器(如Chrome, Firefox, Safari等...
然后,调用`document.execCommand('copy')`命令来执行浏览器内置的复制功能,将选定的文本复制到剪贴板。最后,弹出一个警告框告知用户“复制成功”。 这个实现依赖于浏览器的`execCommand`方法,它是一个非标准但...
这种方法利用了`document.execCommand`API,它允许执行一系列编辑命令(如复制、剪切等)。此API已经被浏览器逐步弃用,但在某些情况下仍可使用。以下是具体实现步骤: 1. **创建一个隐藏的输入框**:用于放置待...
case 1: E.document.execCommand("Bold");break; case 2: E.document.execCommand("Italic");break; case 3: E.document.execCommand("Underline");break; case 6: var _Text=RemoveHTML(_Text); _Text=window....
这些操作都是通过调用 document 对象的 execCommand 方法来实现的。 4. 其他类 * window.location="view-source:" + window.location.href:查看源文件 * window.external.ShowBrowserUI('LanguageDialog', null)...
contentEditables 中 document.execCommand 的一个稍微甜一点的 api。 目标: 公开一个更容易发现的 api 以在 contentEditables 中使用。 由 DIY WYSIWYG 工具栏控制的基本功能 无依赖 ~200 行(5k-ish 未压缩) ...
document.execCommand(sCommand[, bUserInterface[, value]]) ``` - `sCommand`:这是一个字符串参数,用来指定要执行的命令。例如,"bold" 会将选中的文本设为粗体,"insertImage" 可以插入图片等。 - `...
* execCommand:执行命令,如插入、删除、格式化等。 * focus:将焦点设置到对象上。 * getElementsByName:获取具有指定名称的所有元素对象的集合。 * getElementsByTagName:获取具有指定标签名称的所有元素对象的...
Pixy方法受到IE的cache bug影响会闪烁。其实并没有说清楚这个问题,但其实该bug是有条件的,即IE的cache设置为Every...此外有人发现了一个未公开的方法来让IE对背景图进行缓存: document.execCommand(“BackgroundImag
3. `execCommand(commandId, showUI, value)`:执行文档的命令,如剪切、复制、粘贴等(部分现代浏览器已废弃)。 以上只是`document`对象的一些主要方法,实际使用中还有更多方法,如`createAttribute`、`...