javascript - 使用 document.execCommand() 使文本加粗使页面刷新

标签 javascript iframe wysiwyg

我想做什么

我试图在单击粗体按钮时将某些文本设为粗体。这会触发调用 execCommand 函数的函数...不幸的是,当我单击按钮时,整个页面都刷新了,我丢失了 iframe 中的所有文本。

我可以看到文本瞬间变成粗体,然后页面重新加载。

我的代码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <!-- Latest compiled and minified CSS -->
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
        <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
    </head>
    <body onLoad="enableEditMode();">

        <div class="container">
            <div class="row">
                <div class="col-md-6 col-md-offset-3">
                    <h2>My Text Editor</h2>

                    <form class="" action="index.html" method="post">

                        <div class="form-group">
                            <label for="title">Title</label>
                            <input class="form-control" type="title" name="title" value="">
                        </div>

                        <div class="form-group">

                            <div class="" id="toolbar">
                                <button onClick="execCmd('bold')"><i class="fa fa-bold"></i></button>
                            </div>
                            <iframe class="form-control" src="" width="" height="" name="richTextField" style="width:100%;height:100%"></iframe>

                        </div>

                        <button class="btn btn-default btn-block" type="submit" name="button">Go!</button>
                    </form>
                </div>
            </div>
        </div>

        <script>
            /**
             *
             */
            function enableEditMode(){
                richTextField.document.designMode = 'On';
            }

            /**
             *
             */
            function execCmd(command){
                richTextField.document.execCommand(command, false, null);
            }
        </script>

    </body>
</html>

我的问题

如何将我的文本加粗并保留我的文本?

最佳答案

找到我的答案:只需向按钮添加一个类型以防止它们自动提交表单。

<button onClick="execCmd('bold')" type="button"><i class="fa fa-bold"></i></button>

关于javascript - 使用 document.execCommand() 使文本加粗使页面刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41976988/

相关文章:

MYSQL 命令行 SELECT INTO OUTFILE, LOAD DATA INFILE ... INTO TABLE 到 CSV,列中包含 html 数据

javascript - 如何检测浏览器是否支持 MJPEG?

javascript - 生成连续变量并设置等于函数

html - 是否可以让 CSP 仅适用于父框架,而不适用于任何 iframe?

javascript - 来自 URL 的 iframe 源

javascript - document.execCommand 不会在 IE11 中取消加粗

javascript - 如何通过鼠标单击获取表格上的坐标

javascript - 使用 math.round() 添加和删除值的 jquery 问题

javascript - 如何使用 CycleJS 将 html 插入 iframe

javascript - Summernote 将字体大小添加到工具栏