打造属于自己的 HTML/CSS/JavaScript 实时编辑器

转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。
原文出处:https://blog.bitsrc.io/build-an-html-css-js-playground-64c62133746d

目前市面上已经有很多类似的平台和方案了,类似像jsfiddle、CodePen、Storybook这样的平台,这些平台可以让我们在浏览器中创建代码并直接执行,无需单独在我们本地创建项目,所以当你在测试一段代码时,这些平台可能会为你提供一些帮助。

本篇文章是我们 “如何创建____编辑器” 系列中的第一篇,后续可能还会包括:

  • 创建一个Angular编辑器
  • 创建一个React编辑器

在本文中,我们将学习如何创建一个基本的 HTML/CSS/JS 编辑器。

让我们立即开始吧

首先,创建一个项目文件夹,例如:“js_editor“

创建index.html 和 editor.js 文件

现在,我们创建一个HTML,CSS和JS的选项卡,每个选项卡包含了一个文本框,一个文本框用于HTML、另一个用于CSS、最后一个用于JS。我们将使用iframe来呈现所有的HTML、CSS、JS。Iframe是一个创建新浏览器实例的html标记,它可以在其中呈现所有你自定义的代码效果,使用上就像你直接在浏览器中看到的效果是一样的。

现在,废话不多说,index.html全部代码如下:

<html>
<title>HTML/CSS/JS Playground</title>
<link rel="stylesheet" href='./bootstrap.min.css' />

<body>
    <style>
        textarea {
            background-color: black;
            color: white;
            width: 600px;
            height: 350px;
        }
        
        iframe {
            width: 400px;
            height: 350px
        }
    </style>
    <div class="container">
        <h3>HTML/CSS/JS Playground</h3>
        <div class="row">
            <div class="col-12">
                <ul id="myTab" class="nav nav-tabs">
                    <li class="active"><a href="#html" data-toggle="tab"> HTML</a></li>
                    <li><a href="#css" data-toggle="tab">CSS</a></li>
                    <li><a href="#js" data-toggle="tab">JS</a></li>
                </ul>
                <div id="myTabContent" class="tab-content">
                    <div class="tab-pane fade in active" id="html">
                        <p>
                            <textarea style="float:left" id="htmlTextarea"></textarea>
                        </p>
                    </div>
                    <div class="tab-pane fade" id="css">
                        <p>
                            <textarea style="float:left" id="cssTextarea"></textarea>
                        </p>
                    </div>
                    <div class="tab-pane fade" id="js">
                        <p>
                            <textarea style="float:left" id="jsTextarea"></textarea>
                        </p>
                    </div>
                </div>
            </div>
            <div class="col-12">
                <div>
                    <iframe id="iFrame"></iframe>
                </div>
            </div>
        </div>

    </div>

</body>
<script src="./jquery.js"></script>
<script src="./bootstrap.min.js"></script>
<script src="./editor.js"></script>

</html>

在其中,为了使选项卡功能更容易实现一点,我用到了bootstrap.min.js,bootstrap.min.css和jquery.js来帮助我。

现在,让我们继续丰富editor.js吧:

const getEl = id => document.getElementById(id)

const iFrame = getEl('iFrame').contentWindow.document
const htmlTextArea = getEl('htmlTextarea')
const cssTextArea = getEl('cssTextarea')
const jsTextArea = getEl('jsTextarea')

document.body.onkeyup = function() {
    iFrame.open()
    iFrame.writeln(
        htmlTextArea.value +
        '<style>' +
        cssTextArea.value +
        '</style>' +
        '<script>' +
        jsTextArea.value +
        '</script>'
    )
    iFrame.close()
}

我们有一个函数getEl,它通过Dom的id来获取元素,下面我们得到iframe的contentwindow.document。 然后,我们分别创建HTML、CSS、JS textarea的实例,并获得内容。

我们监听了body元素的keyup 事件,如果其子元素输入任意内容,将会触发对函数的调用,然后通过writeln写入Dom,通过获取这些内容,即能在相应的标签中加入合适的内容。

开始使用编辑器

好的,经过简单的几行代码,我们的编辑器已经初具雏形,请在浏览器中加载index.html。在这,我们可以在相应的选项卡中输入相应的代码,右侧的iframe上即可完整呈现你设置的HTML、CSS和JS。

可以通过下面的gif看到,我是如何添加ID为“but“的按钮,然后设置样式,并在按钮上添加click事件并弹出”yes“框。

结论

制作一个属于自己的编辑器非常简单,我也在文末提供了本文使用的项目地址,如果有任何疑问或建议,欢迎提出,谢谢!

下载源码演示包

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
用于在PC机上通过串口与手机交换短消息与通讯录的程序。可将手机上的信息保存在PC上,也可在PC上编辑好相关条目后再保存到手机。可直接通过手机发送短消息。 ======================= 手机编辑器BCB版自述文件 ======================= -------- 版权声明 -------- 作者Ahui保留所有权利。 你可以以个人身份在非商业活动中使用本软件,任何 涉及商业活动的使用权,请与作者本人书面联系。 信箱:ahui@cn.gs 主页:http://ahui.cn.gs 请参考http://ahui.cn.gs/production/phone/index_bcb.html. -------- 系统需求 -------- Pentuim以上CPU win98/2000/xp IE5及以上版本 ------------ 发行文件列表 ------------ PhoneEditor.exe 主程序 readme.txt 本文件 history.xml 历史记录文件 -------- 功能列表 -------- 1.读取手机信息 2.读取手机电话本(SIM卡) 3.读取手机电话本(机身) 4.读取手机短消息(SIM卡) 5.读取手机短消息(机身) 6.编辑电话本 7.添加电话本记录 8.手机短消息发送 9.手机短消息发送记录(xml文件) 10.电话本在电脑文件(xml文件)中的保存/导入 11.短消息在电脑文件(xml文件)中的保存/导入 12.......(电话本的电脑与手机同步功能未完成) -------- 使用步骤 -------- 1.使用数据线连将手机连接到电脑的串口上,记住串口号。 2.运行本软件。 3.使用菜单连接手机的相应串口。 4.查看手机信息。容量为0的相关项目则表示不支持。 ------------------ 已测试手机支持列表 ------------------ 机型 读电话本(机身) 读电话本(SIM卡) 读短消息(机身) 读短消息(SIM卡) SIEMENS 3568i 支持 支持 支持 支持 ERICSSON R320 不支持中文 不支持中文 支持 支持 ERICSSON T39 支持 支持 支持 支持 ALCATE OT710 不支持 支持 不支持 支持 说明:不支持包含两种情况,一种如R320的电话本,无法读出中文,因此标记为不支持。另一种 如OT710的短消息不支持机身保存,自然无法读取。特例为OT710,机身电话本能保存,本程序 暂时无法读取。 请您将手机的使用情况按上述格式反馈给我。不胜感激。 ------------ 版本更新记录 ------------ 1.0.0.10 除错发行 1.0.0.9 完成基本功能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值