为什么document.execCommand()仅适用于<img/>标记?

时间:2015-09-07 10:04:28

标签: javascript html

这是我的HTML代码:

 $.ajax({
         type: "GET",
         url: serviceurl + "/GetBusinessPartner/",
         dataType: "json",
         crossDomain: true,
         success: function (responseData) {
         },
         error: function (xhr) {
         }
   });

<div ng-repeat="item in array"> {{getDateFormat(item.createdOn)|date:'yyyy-MM-dd'}} </div> 无法在 $scope.array = [{ "user": "345", "createdOn": "2015-09-01 13:17:22" }, { "user": "432", "createdOn": "2015-09-01 13:27:56" }]; $scope.getDateFormat = function(timestamp) { return new Date(timestamp); } 代码中使用,但在function formatDoc() { document.execCommand('italic', false, null); } <div id="toolBar2"> <span onclick="formatDoc();">italic</span> <img src="images/video.jpg" onclick="formatDoc();"> </div> <div id="textBox" contenteditable="true"><p>Lorem ipsum</p></div> 代码中运行良好。 为什么? 它也不适用于formatDoc()标签等。到目前为止,我不自觉地试图通过自己来解决问题。

谁能告诉我为什么会这样? :(
谢谢大家。

2 个答案:

答案 0 :(得分:0)

这是来自mozilla开发网络

当HTML文档切换到designMode时,文档对象公开execCommand方法,该方法允许运行命令来操作可编辑区域的内容。大多数命令会影响文档的选择(粗体,斜体等),而其他命令会插入新元素(添加链接)或影响整行(缩进)。使用contentEditable时,调用execCommand()将影响当前活动的可编辑元素。

有关详细信息,请查看                                                                                                                                                                        https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand

答案 1 :(得分:0)

也遇到了这个问题,发现设置了css属性

user-select: none;

在带有点击处理程序的标签上运行execCommand可以解决此问题。

问题似乎是由于Selection对象在单击可以选择的HTML标记时选择了错误的项目。