JS/JQuery execCommand 问题

发布于 2024-10-22 00:15:00 字数 1098 浏览 5 评论 0原文

我在 execCommand 方面遇到了麻烦(完整),所以非常感谢您的帮助 - 我毫不怀疑我正在吠叫错误的树,但是......无论如何

我有一个像这样的 div

<div class="editable" id="editor" contenteditable="true"> 
    <2>Some text in here</h2> blah blah blah ...
</div>

这是“可编辑的”即 文档。 designMode = 'on'; - 它获得焦点的“状态”。在模糊时,它更改为 document.designMode = 'off';

我有一个“测试按钮”

<input type="button" id="bold" value="Bold"> 

,当“单击”时,“突出显示的文本”会变成粗体 - 因此 execCommand

到目前为止,我有这样的东西:

function getSelected() {
if(window.getSelection) { return window.getSelection(); }
else if(document.getSelection) { return document.getSelection(); }
else {
var selection = document.selection && document.selection.createRange();
if(selection.text) { return selection.text; }
return false;
}
return false;
}


$('#bold').click(function(){
var selection = getSelected();
alert(selection);
});

警报(粗体单击)确实给了我突出显示/选定的文本,但我无法弄清楚如何将其“变成粗体”。我想我需要访问innerHTML之类的东西?

非常感谢您的帮助 - 提前致谢。哦,我不想使用 i-frame 或 textarea

I am having trouble (complete) with execCommand so you help much appreciated - I have no doubt I am barking up the wrong tree but ..... anyway

I have a div like this

<div class="editable" id="editor" contenteditable="true"> 
    <2>Some text in here</h2> blah blah blah ...
</div>

That is "editable" i.e. document.designMode = 'on'; - it get's this "state" on focus. On blur it changes to document.designMode = 'off';

I have a "test button"

<input type="button" id="bold" value="Bold"> 

That when "clicked" makes the "highlighted text" bold - hence execCommand

So far I have something like this:

function getSelected() {
if(window.getSelection) { return window.getSelection(); }
else if(document.getSelection) { return document.getSelection(); }
else {
var selection = document.selection && document.selection.createRange();
if(selection.text) { return selection.text; }
return false;
}
return false;
}


$('#bold').click(function(){
var selection = getSelected();
alert(selection);
});

The alert (bold click) does give me the highlighted/selected text but I cannot work out how to "turn it" bold. I guess I need to access the innerHTML or something?

Help much appreciated - thanks in advance. OH and I do not want to use either an i-frame or a textarea

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

十二 2024-10-29 00:15:00

我强烈建议使用 Rangy 来处理文本选择。

跨浏览器 JavaScript 范围和选择库。它提供了一个简单的基于标准的 API,用于在所有主要浏览器中执行常见的 DOM 范围和选择任务,抽象出 Internet Explorer 和兼容 DOM 的浏览器之间此功能的截然不同的实现。

您可以使用 CSS 类应用程序模块将文本加粗 (现场演示)。

I strongly recommend using Rangy for dealing with text selection.

A cross-browser JavaScript range and selection library. It provides a simple standards-based API for performing common DOM Range and Selection tasks in all major browsers, abstracting away the wildly different implementations of this functionality between Internet Explorer and DOM-compliant browsers.

You can use the CSS Class Applier Module to bold the text (live demo).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文