【问题标题】:in Internet Explorer, pasteHTML causes unexpected behavior?在 Internet Explorer 中,pasteHTML 会导致意外行为吗?
【发布时间】:2010-01-19 22:10:33
【问题描述】:

我有以下带有 Javascript 代码的 HTML(注意:这只适用于 Internet Explorer):

<script type='text/javascript'>
function changeIt() {
 var startTag = "<span class='h' id='123abc'>";
 var endTag = "</span>";
 var htmlStr = document.selection.createRange().htmlText;

 document.selection.createRange().pasteHTML(startTag + htmlStr + endTag);
}
</script>
<style type='text/css'> .h { background: yellow; }</style>
<p><b>Four</b> score and seven years</p>
<input type='button' value='change' onclick='javascript:changeIt();'>

要使用此功能,只需突出显示您在屏幕上看到的文本的任何部分,然后单击“更改”按钮。现在,奇怪的行为:

如果您在“四”之后用其他任何内容突出显示“四”(带有粗体标签),它将使整个突出显示变为粗体,这不是我想要的。换句话说,如果你用鼠标突出显示:

分七分

然后点击“更改”按钮,会输出: 分和七分

<b><span class='h' id='123abc'><b>Four</b> score and seven</span></b>

我希望它改为输出: 得分和七分

<span class='h' id='123abc'><b>Four</b> score and seven</span>

我做错了什么?我会用 Javascript 或 jQuery 来回答。

注意:这里的背景颜色似乎没有正确显示,但我的意思是当我不希望它时,整个选择变成粗体。

【问题讨论】:

  • 你的代码在我的机器(IE8)上没有任何作用。
  • 再试一次;我只是重新编辑了代码并自己在 IE8 上再次测试。确保先突出显示一些文本,然后单击按钮。

标签: javascript html internet-explorer


【解决方案1】:

如果您使用的是示例中的TextRange,则可以将其内置的execCommand 方法用于许多格式化任务。对于背景颜色示例,如下所示:

function changeIt() {
    document.selection.createRange().execCommand("BackColor", false, "yellow");
}

注意:此示例仅适用于 IE。

【讨论】:

  • 这对这个例子很有效,这正是我想要的,但是,如果我想向 添加一个类和 id 怎么办?
  • 没关系,我想通了。这是让我研究自己的解决方案的极好催化剂。再次感谢。
  • 嗨詹姆斯。您提到这是您制定自己的解决方案的催化剂。您可以为我们其他人发布您的解决方案吗?
猜你喜欢
  • 1970-01-01
  • 2012-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-04
  • 2011-03-17
  • 2011-09-11
相关资源
最近更新 更多