[翻译]开发一个自己的HTML在线编辑器(一)

eWebEditor_V5.5_for_ASP在线HTML编辑器实战指南 本文还有配套的精品资源,点击获取 简介:eWebEditor V5.5 for ASP是一款为ASP平台设计的正版在线HTML编辑器,支持简体中文及多语言环境,采用GB2312编码标准。它提供了包括富文本编辑、多媒体元素插入、表格与列表操作等在内的多种功能,旨在通过直观的可视化界面降低内容创作难度。编辑器还包括源代码编辑模式和安全保障措施,以及通过“升级说明.txt”和“安... 阅读详情
原文地址: http://aspalliance.com/1092_Rich_Text_Editor_Part_I
[原文源码下载]


开发一个自己的HTML在线编辑器(一)


摘要
在本文中,Haissam Abdul Malak将给大家详细介绍如何使用javascript开发一个HTML在线编辑器,它可以应用于web应用程序中,特别是论坛,社区和博客。这个编辑器支持基于XHTML创建文本的功能。


原文发布日期:2007.01.04
作者: Haissam Abdul Malak
翻译: webabcd


文章内容
介绍
在用户控件中添加HTML代码
javascript文件
编辑器属性
添加一个样式表
结论


介绍
我的一个朋友在一个正在开发的项目(一个博客网站)中遇到了一些问题,是关于文本编辑器的。在研究了所有免费的编辑器之后,他发现没有一个是他所需要的,所以我接下了这个任务,帮他开发一个HTML在线编辑器的用户控件,我认为和大家分享这个控件是个好主意,达到了知识共享的目的。

这个编辑器包括如下一些特性
1、工具栏包括了全部的功能(下面已列出)
    ·排列(居左,居中,居右)
    ·字体格式(加粗,下划线,斜体,字号,字体,文字颜色)
    ·计算单词数,删除格式,插入水平线,撤销,重复,插入字符

2、HTML模式结合到了一个框架中,文本模式结合到了另一个框架中。注意这两个框架只能有一个被显示。

3、有两个图标,分别是“HTML视图”和“设计模式”,一个文本框用来显示单词数,最后有两个隐藏文本框用来存储用户输入的数据。

要看懂这个实例,你需要有javascript和HTML的相关知识。


在用户控件中添加HTML代码
这部分我们将创建一个用户控件(hamHtmlEditor.ascx),并且在其中写一些必需的HTML代码。注意该用户控件不包含<head>, <body> 或 <form> 标记。

我们将创建3个表格来显示所有的图标,另外还要有3个下拉列表框。其中2个表格放在控件的顶端,1个表格放在控件的底部。每个图标都有3个事件,分别是onmouseover,onmouseup,onclick,处理这些事件的是javascript文件中的javascript代码。把javascript代码和HTML代码分开,可以让你更容易理解和调试。然后我们将创建3个层,第一个层包含一个已经有的HTML页(TextArea.htm)。我使用一个HTML页是因为如果用户输入了一个rul,它可以自动的把它转换为HTML代码并呈现在你的文本中。第二个层包括了1个textarea,在用户使用期间,它用来显示HTML代码(默认隐藏)。第3个层包含了一些符号,当用户点击“插入符号”后,这个层将被现实(默认隐藏)。

为了使用户能够输入文字,你必须在控件被使用的时候,将其设置为“设计模式”

列表1
onload="document.frames['HamHtmlEditor1_content'].document.designMode='on'"

请下载这个项目以知道如何正确的创建所有的HTML标记
图1



javascript文件
这部分我们将写一些处理用户事件的函数。首先,我们将定义一些全局变量,其中每一个变量都有自己的功能,但最多的是用来存储图标在被单击之前或者默认的值—“No”。只有一个变量有另一个功能,这个变量是sourceText,它用来存储用户输入的文本。

列表2
var  sourceText =  '';
var  imgStatusBold  =  'No';
var  imgStatusItalic  =  'No';
var  imgStatusUnderLine  =  'No';
var  imgStatusLeft  =  'No';
var  imgStatusCenter  =  'No';
var  imgStatusRight  =  'No';
var  imgStatusRemoveF =  'No';
var  imgStatusWCount  =  'No';
var  imgStatusInsertL  =  'No';

基于上面这些变量的值,当用户点击了1个图标,将检查相关的变量是否是“Yes”,它用来指明相关的图标并不是第一次加载时的图标。当用户控件全部加载完毕,我们将立即设置这些图标为他们的初始状态,当我们需要改变图标状态的时候,如果原来的值为“No”,就把它变为“Yes”。

有三个功能分别被称作onmouseover,onmouseup,和onclick。Onmouseover触发函数ChangeImg(),作用是当用户把鼠标放到图标上则改变所显示的图标的状态,这个函数需要两个参数(容器ID和新图标路径)。注意工具栏上的图标在web应用程序中被放置到“Images”文件夹下。

列表3
function  ChangeImg(id, imgsrc)
{
    
var imgSrc = "Images/" + imgsrc;
    document.getElementById(id).src 
= imgSrc;
}

Onmouseup函数的功能是用户的鼠标离开一个图标时,把这个图标该回其初始的状态,它需要3个参数(容器ID,新图标路径和1个变量)

列表4
function  ReturnImg(id, imgsrc, ownVar)
{
    
if(ownVar == 'No')
    
{
        
var imgSrc = "Images/" + imgsrc;
        document.getElementById(id).src 
= imgSrc;
    }

}

第3个参数用来说明这个图标是否是被选中的状态,默认值是“No”。

单击图标后执行一个指定的动作,一个单独的javascript方法被调用,每一个动作都有标准的写法。

列表5
document.frames['HamHtmlEditor1_content'].document.execCommand('JustifyLeft', false , null );

使用上面这个方法可以使用户输入的文字居左。ExecCommand将在文档中执行一个命令。它使用一个预先组合到一起的功能来直接在浏览器中操作页面的布局。注意,只有在页面完全加载完毕后才能使用它。

列表6
function  MakeBold(boldover, bold)
{
    
var img = document.getElementById('Bold')       
    
var imgBold = "Images/" + boldover
    
var imgNotBold = "Images/" + bold
    img.src 
= imgBold;
                  
    
if(imgStatusBold == 'Yes')
    
{
        imgStatusBold
='No';
        img.src 
= "Images/" + bold;
    }

    
else
    
{
        imgStatusBold
= 'Yes'
    }

    document.frames['HamHtmlEditor1_content'].document.execCommand('bold',
false,null);
    document.frames['HamHtmlEditor1_content'].focus();                
}

上面这段代码的功能是使用户输入的文字加粗的。当用户点击了加粗按钮,我们要改变这个按钮的状态。设置相关的全局变量为“Yes”,意思是该按钮已被选中。每次用户单击按钮,我们都要检查相关的变量,来确定之前按钮是否是被选中的状态,然后我们给选中的文字加粗。它需要两个参数,第一个用来存储鼠标经过时加粗按钮的图标路径,第二个用来存储正常加粗按钮的路径。相同的语法也在,斜体和下划线中适用。

对文字进行排列,我们使用与MakeBold()相似的函数,但是,3个排列功能的按钮只能有一个是被选中状态,其它两个要变为初始的未被选中的状态。

为了完成上面指出的那个execCommand命令,请参考
http://www.course.com/downloads/newperspectives/crweb3/documents/dhtml_t02.html

现在我们创建一个计算用户输入的单词数的函数。定义一个变量,默认值为0。在定义另一个变量用来存储用户输入的文本,我们将拆开这个变量,并且将拆开的结果保存到一个数组中,然后检查数组内每个元素的长度,如果是零则不计数,如果不是零则计数变量加1。计数完后,我们把该值赋给用于显示计数的文本框。

列表7
var  wordCount  =  document.frames['HamHtmlEditor1_content'].document.body.innerText;
var  count  =   0 ;
countWithSpace 
=  wordCount.replace('/n', '');
countWithoutSpaces 
=  countWithSpace.split(' ');
for (i = 0 ;i < countWithoutSpaces.length;i ++ )
{
    
if(countWithoutSpaces[i].length>0)
    
{
        count 
+=1;
    }

    window.parent.document.getElementById('HamHtmlEditor1_TxtCount').value 
= count;
}

当单击“删除格式”按钮后,我们调用一个javascript函数,发送命令“RemoveFormat”给execCommand用来删除选中文本的格式。

如果想删除某些已经有格式的文本的格式,这个功能将是非常有用的。

列表8
function  RemoveFormating()
{     
    document.frames['HamHtmlEditor1_content'].document.execCommand('RemoveFormat');
    document.frames['HamHtmlEditor1_content'].focus();
}

“撤销”和“重做”功能与上面这段javascript类似。给execCommand发送“undo”或“redo”将执行撤销和重做功能。需要一个参数来指明命令的名字。

列表9
function  Formats (style)
{
    document.frames['HamHtmlEditor1_content'].document.execCommand(style);
    document.frames['HamHtmlEditor1_content'].focus();
}

当用户单击“插入符号”按钮,我们将在该按钮之后显示第3个层来出示所有符号图片。我们使用javascript来做这件事。

列表10
function  ShowDiv(images)
{
    
var div = document.getElementById(images);
    
if(div.style.display == 'block')
        div.style.display 
= 'none';
    
else
        div.style.display 
= 'block';
}

图2:用户单击“插入符号”后,编辑器的外观


当用户点击第3个层的任意一个符号时,另一个javascript函数被调用,它用来在编辑器中指针的位置处插入符号。这个函数需要3个参数。第一个参数用来指定execCommand的命令来在文档中插入一个图片(InsertImage),第二个参数是图片的路径,第三个参数是该图片所在的层的id。注意所有的符号在web应用程序中被放置在一个“Emoticons”文件夹下。

列表11
function  insertImages(style,url,images)
{
    document.getElementById(images).style.display 
= 'none'
    document.frames['HamHtmlEditor1_content'].focus();
    HamHtmlEditor1_content.document.execCommand(style,'',url)
    document.frames['HamHtmlEditor1_content'].focus();
}

当单击“HTML视图”按钮后,第二个层被显示,而第一个层则被隐藏。这个层的“readonly”属性被设置成了“true”,意思是用户在此状态下不能对其编辑,我们只能在这个层里看到HTML代码。

列表12
function  TransformtoHtml()
{
    document.getElementById('HamHtmlEditor1_Div2').style.display 
= 'block';
    document.getElementById('HamHtmlEditor1_Div2').innerText 
= 
    document.frames['HamHtmlEditor1_content'].document.body.innerHTML;
}

当单击“设计模式”按钮后,第二个层则被隐藏

列表13
function  TransformToText()
{
    document.getElementById('HamHtmlEditor1_Div2').style.display 
= 'none';
}

下拉列表用来让用户选择预先设定好的数据。

第一个是字号,尺寸在1(10pt)到7(22pt)之间。这个按钮被单击后,要调用一段javascript函数。这个函数获得用户在下拉列表里选择的值,然后作为第三个参数发送给execCommand。第一个参数是“FontSize”,用来执行设置文字大小的命令。注意,下拉列表中的字号大小是预先在用户控件中的HTML代码里定义好的。

列表14
function  ChangeFont()
{
    
var fontSize = document.getElementById('FontDropDownonchange');
    document.frames['HamHtmlEditor1_content'].document.execCommand('FontSize',
0,fontSize.options[fontSize.selectedIndex].text);
    document.frames['HamHtmlEditor1_content'].focus();
}

接下来这段代码用来改变字体。第一个参数是“FontName”,用来执行设置文字字体的命令,第二个参数是false或者0,第三个参数是用户所选择的文字。

列表15
function  ChangeFontName()
{
    
var fontName = document.getElementById("FontFamilyName");
    document.frames['HamHtmlEditor1_content'].document.execCommand('FontName',
false,fontName.options[fontName.selectedIndex].text);
    document.frames['HamHtmlEditor1_content'].focus();
}

第三个下来列表用来选择所选文字的颜色。这些颜色是预先定义好的,如果你想可以设置更多的颜色,请修改相关的HTML代码。

列表16
function  ChangeFontColor()
{
    
var fontColor = document.getElementById("Color");
    document.frames['HamHtmlEditor1_content'].document.execCommand('ForeColor',
false,fontColor.options[fontColor.selectedIndex].text);
    document.frames['HamHtmlEditor1_content'].focus();
}

最后的功能用来把用户输入的文本值存储到一个隐藏字段中,其详细的HTML值存储到另一个隐藏字段中。这样即使编辑器失去焦点,也可以获取到值,下一部份你可以看到在编码的过程中通过使用两个属性来取得隐藏字段的值。

列表17
function  CloneText()
{
    document.getElementById('HamHtmlEditor1_ContentTxt').innerText 
= document.frames['HamHtmlEditor1_content'].document.body.innerText;
    document.getElementById('HamHtmlEditor1_ContentHtml').value 
= document.frames['HamHtmlEditor1_content'].document.body.outerHTML;
}

这部分完成后,你的javascript文件就准备完了。你如果想在你的用户控件中使用这个文件,就需要在代码中加入<head>标签。如下
< script  src ="HTMLEditor.js"  language ="javascript"  type ="text/javascript></script>

如果你想调试javascript,需要加一个词“debugger”。这样编译时将开始调试模式。或者你也可以设置你的IE浏览器,把“禁用脚本调试(Internet Explorer)”和“禁用脚本调试(其他)”两个复选框的选中状态取消,然后添加你的端点。(译者注:调试js可以参考这篇文章: 在Visual Studio中调试JavaScript)


编辑器属性
如果想将用户输入的文本保存为.txt文件或者把HTML代码保存到另一个.txt文件,你可以在这个控件中添加以下两种属性:

首先在你的ascx.cs页面创建两个字段。

列表18
protected  System.Web.UI.HtmlControls.HtmlInputText ContentTxt;
protected  System.Web.UI.HtmlControls.HtmlInputText ContentHtml;

创建两个被保护的变量,保存以上创建的字段的值。

列表19
protected   string  _text;
protected   string  _html;

第一个属性被称为“ContentText”,它可以获取文本并在你的后置代码中赋值给一个变量。

ContentTxt被声明成一个HtmlInputText控件,它的Value属性被存储到_text字符串变量中。

列表20
public   string  ContentText
{
    
get 
    
{
        
return _text = ContentTxt.Value;
    }

    
set
    
{
        _text 
= value;
    }

}

第二个属性被称为“ContentInnerHtml”,它可以获得详细的HTML代码。

ContentHtml被声明成一个HtmlInputText控件,它的Value属性被存储到_html字符串变量中。

列表21
public   string  ContentInnerHtml
{
    
get
    
{
        
return _html  = ContentHtml.Value;
    }

    
set
    
{
        _html 
= value;
    }

}


添加一个样式表
在这部分我们将创建一个样式表(Styles.css),用来修改工具栏和框架的UI。我们将设置工具栏的背景颜色为蓝色。框架右侧和底部的也设置成相同的颜色。通过修改下面的代码,你可以随便设置控件的界面(UI)。
列表22
.HtmlView
{
    background-color
:white;
    border-bottom-width
:medium;
    border-bottom-style
:solid;
    border-bottom-color
:cornflowerblue;
    border-right-width
:medium;
    border-right-color
:cornflowerblue;
    border-right-style
:solid;
}

.FirstDiv
{
    background-color
:white;
    border-bottom-width
:medium;
    border-bottom-style
:solid;
    border-bottom-color
:cornflowerblue;
    border-right-width
:medium;
    border-right-color
:cornflowerblue;
    border-right-style
:solid;
}

.toolbar
{
    background-color
:cornflowerblue;
    background-repeat
:repeat;
}

现在在你用户控件的<head>标签内链接上这个样式表,代码如下:
< LINK  href ="Styles.css"  type ="text/css"  rel ="stylesheet" >

图3


注意如果你要在用户控件中包含多个实体,你必须为这些div层创建动态的标识。请注意,div层的ID被设置成了“userControlID_divlayer”。


结论
我们可以看到,开发你自己的HTML在线编辑器并不是很困难。在这篇文章里我详细的解释了javascript语言和XHTML。这是HTML在线编辑器的第一个版本,我们非常感谢你使用它并且提供给我们你的意见。它的第二个版本,将会有更多的特性,如果你有什么好的注意,欢迎告诉我们。我们目前正在开发第二个版本,它也将通过这个网站发布出来,其会增加复制,粘贴,剪切,项目符号,项目编号,打印等功能以及一个可自定义的工具栏。

希望这篇文章有阅读的价值。

[原文源码下载]

祝编程愉快!
在线翻译.html 立即下载

相关推荐

自己制作在线翻译html

用必应接口,自己制作html在线翻译,可以实现多种语言的翻译

Html源码在线翻译,HTML – 谷歌翻译网站

将以下代码粘贴到您的网站上.包含在googleTranslateElementInit()中的语言中提到的语言将显示在您的网站上.I will suggest you to paste this in website header or footer section so that translation feature will yield on every page of your websi...

weixin_34262786的博客 3624

告别实车测试:手把手教你用Vector VT平台搭建OBC/DCDC的HIL测试台架

本文详细介绍了如何利用Vector VT平台搭建新能源汽车OBC/DCDC的HIL测试台架,涵盖硬件选型、模型部署到自动化测试的全流程。通过HIL仿真测试技术,工程师可以高效验证动力域关键部件,大幅缩短开发周期并降低成本,特别适合新能源汽车三电系统的开发验证。

weixin_42659194的博客 338

html在线翻译,html/http

第一课基础当我们畅游Internet时,我们透过浏览器所看到的网站,是由HTML(HyperTextMarkupLanguage)语言所构成。HTML(超文件标记语言)是一种建立网页文件的语言,透过标记式的指令(Tag),将影像、声音、图片、文字等连结显示出来。HTML标记是由所括住的指令,主要分为:单标记指令、双标记指令(由,所构成)。HTML网页文件可由任何文本编辑器或网页专用编辑器编辑,完成...

weixin_39731916的博客 798

串口调试神器诞生记:我是如何用Cursor+AI自动生成C#上位机的(含VSCode插件清单)

本文详细介绍了如何利用Cursor和AI技术快速开发C#上位机程序,实现高效的串口通讯调试。从开发环境搭建到代码自动生成,再到性能优化和功能增强,全面展示了AI辅助开发在串口调试中的实际应用和显著效率提升。

weixin_28340315的博客 298

(赛事-2022)[re:Invent 2018]-002:通过分析log多次迭代优化奖励函数后- 最快7.6s / 圈

Deepracer training 流程

Rainbow 4711

html在线翻译,HTML实现调用百度在线翻译API

最近在帮忙写网站,等有时间之后再仔细的研究后台。TranslateTranslate$("#Click").click(function (){var contents = $("#srcText").val() ;alert( contents) ;$.ajax({type:"get",async:false,//must be synchronizedurl:"http://openapi....

weixin_32349577的博客 1087

修复后找不到ip 黑群晖_黑群晖引导U盘损坏了怎么办?

前言虽然一般来说引导U盘损坏的可能性很小,但是避免不了万一出现问题导致黑群晖没有办法引导进入系统也是一件相当麻烦的事情。这里我就用两块U盘做个小试验,看看如果黑群晖上的引导U盘损坏以后,另一块U盘需要怎样写引导文件才能让黑群晖正常引导进入系统。试验开始我这里黑群晖使用的是DSM6.1.7的系统,U盘一块使用的是闪迪的酷豆,另一块就是闪迪的酷铄。目前系统引导U盘使用的是酷豆,VID:0781 PID...

weixin_36239323的博客 8267

HTML实现调用百度在线翻译API

HTML实现调用百度在线翻译API 本文章已收录于: <!doctypehtml> <htmllang="en"> <head> <metacharset="UTF...

weixin_30876945的博客 1087

FreeSWITCH编译安装详细文档

本文档详细介绍了在Ubuntu 22.04系统上从源码编译安装FreeSWITCH的完整流程。主要内容包括:1)系统环境准备和依赖库安装;2)关键依赖库spandsp和sofia-sip的编译安装;3)FreeSWITCH源码的特定版本(v1.6.0)编译配置,包括禁用SignalWire模块的配置方法;4)系统服务配置,包括创建专用用户、设置权限以及配置systemd服务文件。文档特别提供了版本控制说明,确保后期能切换到相同的版本环境,并附有详细的命令操作步骤和注意事项。

唯有代码让我痴狂 1369

新手别怕!用‘东北天’和‘右前上’坐标系,5分钟搞懂惯性导航姿态矩阵(含Python验证代码)

本文通过‘东北天(ENU)’和‘右前上(RFU)’坐标系,详细解析惯性导航中的姿态矩阵概念。包含Python代码验证,帮助新手快速理解坐标变换、欧拉角及旋转矩阵的构建与应用,特别强调有限转动不可交换性与无限转动次序无关的区别。

weixin_29062255的博客 331

上接[翻译]开发一个自己的HTML在线编辑器(一)

接下来这段代码用来改变字体。第一个参数是“FontName”,用来执行设置文字字体的命令,第二个参数是false或者0,第三个参数是用户所选择的文字。列表15 function ChangeFontName() { var fontName = document.getElementById("FontFamilyName"); docu...

weixin_33912445的博客 154

【人工智能之深度学习】18. 金融风控实战:TCN时序卷积网络构建信用卡欺诈实时检测系统

摘要:信用卡欺诈交易识别是金融风控的核心环节,其面临欺诈样本占比低(仅0.1%)、实时响应要求高(毫秒级)等挑战。本文基于IEEE-CIS公开数据集,构建基于时序卷积网络(TCN)的欺诈检测系统,通过捕捉用户交易行为的时序模式识别异常。详细阐述全流程:从数据预处理(构造交易序列特征)、TCN模型设计(轻量级架构适配实时场景),到实时检测部署(异步处理确保低延迟)。实验显示,该系统精确率达63%、召回率89%,误杀率仅0.2%,推理延迟8ms,较XGBoost等传统模型性能显著提升。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1126

[翻译]开发一个自己的HTML在线编辑器(一)(转 webabcd )

介绍我的一个朋友在一个正在开发的项目(一个博客网站)中遇到了一些问题,是关于文本编辑器的。在研究了所有免费的编辑器之后,他发现没有一个是他所需要的,所以我接下了这个任务,帮他开发一个HTML在线编辑器的用户控件,我认为和大家分享这个控件是个好主意,达到了知识共享的目的。这个编辑器包括如下一些特性1、工具栏包括了全部的功能(下面已列出)    ·排列(居左,居中,居右)    ·字体格式...

weixin_34391854的博客 100

【PCIe硬件】PCIe引脚PRSNT与热插拔

热插拔的基本目的是要让PCIe设备按照规定的顺序、原则,从系统中移除或插入到系统中来,并能正常的工作,且不影响系统的正常运行。事实上,PCIe“热插拔”的关键目的就是为前面面所提到的系统RAS服务的,是提升系统RAS能力的非常重要的手段!注意,这里有两个相关概念,前面我们讲的热插拔,其实是广义的“热插拔”。这里的Hot-Plug,为了方便,我们叫做PCIe热插拔,也就是我们现在及后面将要讨论的内容。

smartvxworks的博客 2800

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【亲测免费】 GPX Studio在线GPX文件编辑器安装配置指南

GPX Studio是一个开源的在线工具,专为编辑GPS交换格式(GPX)文件设计。这个项目主要用于加载、编辑和创建GPX文件,支持多轨迹处理、编辑信息、地图自定义等功能。主要编程语言包括HTML、JavaScript和CSS。 ## 关键技术和框架 GPX Studio依赖于一系列强大的开源技术来实现其功能,核心包括但不限于: - **Leaflet**: 强大的地图库,用于地图展示。 - *...

gitblog_07882的博客 1561

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

开发一个自己的HTML在线编辑器

原文地址:http://aspalliance.com/1092_Rich_Text_Editor_Part_I[原文源码下载]开发一个自己的HTML在线编辑器(一)摘要在本文中,Haissam Abdul Malak将给大家详细介绍如何使用javascript开发一个HTML在线编辑器,它可以应用于web应用程序中,特别是论坛,社区和博客。这个编辑器支持基于XHTML创建文本的功能。原文发布

wcg83的专栏 1704

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

[翻译]开发一个自己的HTML在线编辑器(二)

原文地址:http://aspalliance.com/1156_Rich_Text_Editor__Part_II[原文源码下载][翻译]开发一个自己的HTML在线编辑器(二)原文发布日期:2007.02.27作者:Haissam Abdul Malak翻译:webabcd文章内容介绍javascrit文件后置代码结论介绍在我们一起研究了如何开发一个HTML在线编辑器后(第一部分在这里

webabcd的专栏 788

在线图片编辑器miniPaint

miniPaint 是一个开源的在线图像编辑器,是 Adobe Photoshop 的开源替代。

wbsu2004的博客 9949

在线html编辑器 jquery,9个免费的JavaScript/jQuery WYSIWYG HTML编辑器

在线编辑内容的时候,那些Javascript/jQuery WYSIWYG HTML编辑器帮了开发人员的大忙。那么你是否还在寻找一些免费的Javascript或jQuery WYSIWYG HTML编辑器呢?今天,我们罗列9个非常实用的HTML编辑器,来帮助开发人员更快更好地进行Web开发!TinyMCETinyMCE是一个轻量级的基于浏览器的WYSIWYG编辑器,支持目前流行的各种浏览器,由Ja...

weixin_35753291的博客 583

html5引用在线文本编辑器,属于Web开发人员的5个HTML5文本编辑器

慧都将于近期隆重推出“DevExpress 14.2新版发布会”。心动不如行动,赶快报名吧!我们期待与您相约DevExpress 14.2新版发布会。查看详情>>Web开发人员和设计人员经常需要用到HTML5文本编辑器,同时它也是Web开发人员最为重要的工具之一。由于HTML5技术的不断发展,为此在这篇文章中,小编就为大家列出了目前最好的HTML5文本编辑器,相信这些好的编辑器集合能够...

weixin_32572673的博客 395

新手教程:如何开发一个简单的 VSCode 翻译插件?

不需要配环境就能在线开发调试,我后来把插件代码放上去跑,发现连API密钥都可以用他们的环境变量管理,部署测试特别省心。对于新手来说,这种开箱即用的体验真的能少走很多弯路。最近在学VSCode插件开发,尝试做了一个翻译小工具,把踩坑经验整理成笔记分享给同样刚入门的朋友们。这个插件能实现选中文本自动翻译,特别适合查文档时快速理解外文内容。初始化时选择"New Extension(TypeScript)",这样能获得更好的类型提示。整个过程最花时间的是处理各种边界情况,比如网络波动时重试机制、特殊字符编码等。

EmeraldWolf23的博客 719
上一篇: 扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)
下一篇: 扩展GridView控件(5) - 固定指定行、指定列
webabcd
博客等级 码龄17年 28粉丝 911原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值