网页编辑器ckeditor和ckfinder配置步骤分享


Posted in Javascript onMay 24, 2012

一、使用方法:
1、在页面<head>中引入ckeditor核心文件ckeditor.js
<script type="text/javascript" src="ckeditor/ckeditor.js"></script>
2、在使用编辑器的地方插入HTML控件<textarea>
<textarea id="TextArea1" cols="20" rows="2" class="ckeditor"></textarea>
如果是ASP.NET环境,也可用服务器端控件<TextBox>
<asp:TextBox ID="tbContent" runat="server" TextMode="MultiLine" class="ckeditor"></asp:TextBox>
注意在控件中加上 class="ckeditor" 。
3、将相应的控件替换成编辑器代码
<script type="text/javascript">
CKEDITOR.replace('TextArea1');
//如果是在ASP.NET环境下用的服务器端控件<TextBox>
CKEDITOR.replace('tbContent');
//如果<TextBox>控件在母版页中,要这样写
CKEDITOR.replace('<%=tbContent.ClientID.Replace("_","$") %>');
</script>
4、配置编辑器(这些配置默认也是没关系的)
ckeditor的配置都集中在 ckeditor/config.js 文件中,下面是一些常用的配置参数:
// 界面语言,默认为 'en'
config.language = 'zh-cn';
// 设置宽高
config.width = 400;
config.height = 400;
// 编辑器样式,有三种:'kama'(默认)、'office2003'、'v2'
config.skin = 'v2';
// 背景颜色
config.uiColor = '#FFF';
// 工具栏(基础'Basic'、全能'Full'、自定义)plugins/toolbar/plugin.js
config.toolbar = 'Basic';
config.toolbar = 'Full';
这将配合:
config.toolbar_Full = [
['Source','-','Save','NewPage','Preview','-','Templates'],
['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print', 'SpellChecker', 'Scayt'],
['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
['Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton', 'HiddenField'],
'/',
['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
['Link','Unlink','Anchor'],
['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],
'/',
['Styles','Format','Font','FontSize'],
['TextColor','BGColor']
];
//工具栏是否可以被收缩
config.toolbarCanCollapse = true;
//工具栏的位置
config.toolbarLocation = 'top';//可选:bottom
//工具栏默认是否展开
config.toolbarStartupExpanded = true;
// 取消 “拖拽以改变尺寸”功能 plugins/resize/plugin.js
config.resize_enabled = false;
//改变大小的最大高度
config.resize_maxHeight = 3000;
//改变大小的最大宽度
config.resize_maxWidth = 3000;
//改变大小的最小高度
config.resize_minHeight = 250;
//改变大小的最小宽度
config.resize_minWidth = 750;
// 当提交包含有此编辑器的表单时,是否自动更新元素内的数据
config.autoUpdateElement = true;
// 设置是使用绝对目录还是相对目录,为空为相对目录
config.baseHref = ''
// 编辑器的z-index值
config.baseFloatZIndex = 10000;
//设置快捷键
config.keystrokes = [
[ CKEDITOR.ALT + 121 , 'toolbarFocus' ], //获取焦点
[ CKEDITOR.ALT + 122 , 'elementsPathFocus' ], //元素焦点
[ CKEDITOR.SHIFT + 121 , 'contextMenu' ], //文本菜单
[ CKEDITOR.CTRL + 90 , 'undo' ], //撤销
[ CKEDITOR.CTRL + 89 , 'redo' ], //重做
[ CKEDITOR.CTRL + CKEDITOR.SHIFT + 90 , 'redo' ], //
[ CKEDITOR.CTRL + 76 , 'link' ], //链接
[ CKEDITOR.CTRL + 66 , 'bold' ], //粗体
[ CKEDITOR.CTRL + 73 , 'italic' ], //斜体
[ CKEDITOR.CTRL + 85 , 'underline' ], //下划线
[ CKEDITOR.ALT + 109 , 'toolbarCollapse' ]
]
//设置快捷键 可能与浏览器快捷键冲突 plugins/keystrokes/plugin.js.
config.blockedKeystrokes = [
CKEDITOR.CTRL + 66 ,
CKEDITOR.CTRL + 73 ,
CKEDITOR.CTRL + 85
]
//设置编辑内元素的背景色的取值 plugins/colorbutton/plugin.js.
config.colorButton_backStyle = {
element : 'span',
styles : { 'background-color' : '#(color)' }
}
//设置前景色的取值 plugins/colorbutton/plugin.js
config.colorButton_colors = '000,800000,8B4513,2F4F4F,008080,000080,4B0082,696969,B22222,A52A2A,DAA520,
006400,40E0D0,0000CD,800080,808080,F00,FF8C00,FFD700,008000,0FF,00F,EE82EE,
A9A9A9,FFA07A,FFA500,FFFF00,00FF00,AFEEEE,ADD8E6,DDA0DD,D3D3D3,FFF0F5,
FAEBD7,FFFFE0,F0FFF0,F0FFFF,F0F8FF,E6E6FA,FFF'
//是否在选择颜色时显示“其它颜色”选项 plugins/colorbutton/plugin.js
config.colorButton_enableMore = false
//区块的前景色默认值设置 plugins/colorbutton/plugin.js
config.colorButton_foreStyle = {
element : 'span',
styles : { 'color' : '#(color)' }
};
//所需要添加的CSS文件 在此添加 可使用相对路径和网站的绝对路径
config.contentsCss = './contents.css';
//文字方向
config.contentsLangDirection = 'rtl'; //从左到右
//CKeditor的配置文件 若不想配置 留空即可
CKEDITOR.replace( 'myfiled', { customConfig : './config.js' } );
//界面编辑框的背景色 plugins/dialog/plugin.js
config.dialog_backgroundCoverColor = 'rgb(255, 254, 253)'; //可设置参考
config.dialog_backgroundCoverColor = 'white' //默认
//背景的不透明度 数值应该在:0.0~1.0 之间 plugins/dialog/plugin.js
config.dialog_backgroundCoverOpacity = 0.5
//移动或者改变元素时 边框的吸附距离 单位:像素 plugins/dialog/plugin.js
config.dialog_magnetDistance = 20;
//是否拒绝本地拼写检查和提示 默认为拒绝 目前仅firefox和safari支持 plugins/wysiwygarea/plugin.js.
config.disableNativeSpellChecker = true
//进行表格编辑功能 如:添加行或列 目前仅firefox支持 plugins/wysiwygarea/plugin.js
config.disableNativeTableHandles = true; //默认为不开启
//是否开启 图片和表格 的改变大小的功能 config.disableObjectResizing = true;
config.disableObjectResizing = false //默认为开启
//设置HTML文档类型
config.docType = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"' ;
//是否对编辑区域进行渲染 plugins/editingblock/plugin.js
config.editingBlock = true;
//编辑器中回车产生的标签
config.enterMode = CKEDITOR.ENTER_P; //可选:CKEDITOR.ENTER_BR或CKEDITOR.ENTER_DIV
//是否使用HTML实体进行输出 plugins/entities/plugin.js
config.entities = true;
//定义更多的实体 plugins/entities/plugin.js
config.entities_additional = '#39'; //其中#代替了&
//是否转换一些难以显示的字符为相应的HTML字符 plugins/entities/plugin.js
config.entities_greek = true;
//是否转换一些拉丁字符为HTML plugins/entities/plugin.js
config.entities_latin = true;
//是否转换一些特殊字符为ASCII字符 如"This is Chinese: 汉语."转换为"This is Chinese: 汉语."
plugins/entities/plugin.js
config.entities_processNumerical = false;
//添加新组件
config.extraPlugins = 'myplugin'; //非默认 仅示例
//使用搜索时的高亮色 plugins/find/plugin.js
config.find_highlight = {
element : 'span',
styles : { 'background-color' : '#ff0', 'color' : '#00f' }
};
//默认的字体名 plugins/font/plugin.js
config.font_defaultLabel = 'Arial';
//字体编辑时的字符集 可以添加常用的中文字符:宋体、楷体、黑体等 plugins/font/plugin.js
config.font_names = 'Arial;Times New Roman;Verdana';
//文字的默认式样 plugins/font/plugin.js
config.font_style = {
element : 'span',
styles : { 'font-family' : '#(family)' },
overrides : [ { element : 'font', attributes : { 'face' : null } } ]
};
//字体默认大小 plugins/font/plugin.js
config.fontSize_defaultLabel = '12px';
//字体编辑时可选的字体大小 plugins/font/plugin.js
config.fontSize_sizes
='8/8px;9/9px;10/10px;11/11px;12/12px;14/14px;16/16px;18/18px;20/20px;22/22px;24/24px;26/26px;28/28px;36/36px;48/48
px;72/72px'
//设置字体大小时 使用的式样 plugins/font/plugin.js
config.fontSize_style = {
element : 'span',
styles : { 'font-size' : '#(size)' },
overrides : [ { element : 'font', attributes : { 'size' : null } } ]
};
//是否强制复制来的内容去除格式 plugins/pastetext/plugin.js
config.forcePasteAsPlainText =false //不去除
//是否强制用“&”来代替“&”plugins/htmldataprocessor/plugin.js
config.forceSimpleAmpersand = false;
//对address标签进行格式化 plugins/format/plugin.js
config.format_address = { element : 'address', attributes : { class : 'styledAddress' } };
//对DIV标签自动进行格式化 plugins/format/plugin.js
config.format_div = { element : 'div', attributes : { class : 'normalDiv' } };
//对H1标签自动进行格式化 plugins/format/plugin.js
config.format_h1 = { element : 'h1', attributes : { class : 'contentTitle1' } };
//对H2标签自动进行格式化 plugins/format/plugin.js
config.format_h2 = { element : 'h2', attributes : { class : 'contentTitle2' } };
//对H3标签自动进行格式化 plugins/format/plugin.js
config.format_h1 = { element : 'h3', attributes : { class : 'contentTitle3' } };
//对H4标签自动进行格式化 plugins/format/plugin.js
config.format_h1 = { element : 'h4', attributes : { class : 'contentTitle4' } };
//对H5标签自动进行格式化 plugins/format/plugin.js
config.format_h1 = { element : 'h5', attributes : { class : 'contentTitle5' } };
//对H6标签自动进行格式化 plugins/format/plugin.js
config.format_h1 = { element : 'h6', attributes : { class : 'contentTitle6' } };
//对P标签自动进行格式化 plugins/format/plugin.js
config.format_p = { element : 'p', attributes : { class : 'normalPara' } };
//对PRE标签自动进行格式化 plugins/format/plugin.js
config.format_pre = { element : 'pre', attributes : { class : 'code' } };
//用分号分隔的标签名字 在工具栏上显示 plugins/format/plugin.js
config.format_tags = 'p;h1;h2;h3;h4;h5;h6;pre;address;div';
//是否使用完整的html编辑模式 如使用,其源码将包含:<html><body></body></html>等标签
config.fullPage = false;
//是否忽略段落中的空字符 若不忽略 则字符将以“”表示 plugins/wysiwygarea/plugin.js
config.ignoreEmptyParagraph = true;
//在清除图片属性框中的链接属性时 是否同时清除两边的<a>标签 plugins/image/plugin.js
config.image_removeLinkByEmptyURL = true;
//一组用逗号分隔的标签名称,显示在左下角的层次嵌套中 plugins/menu/plugin.js.
config.menu_groups
='clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,te
xtfield,hiddenfield,imagebutton,button,select,textarea';
//显示子菜单时的延迟,单位:ms plugins/menu/plugin.js
config.menu_subMenuDelay = 400;
//当执行“新建”命令时,编辑器中的内容 plugins/newpage/plugin.js
config.newpage_html = '';
//当从word里复制文字进来时,是否进行文字的格式化去除 plugins/pastefromword/plugin.js
config.pasteFromWordIgnoreFontFace = true; //默认为忽略格式
//是否使用<h1><h2>等标签修饰或者代替从word文档中粘贴过来的内容 plugins/pastefromword/plugin.js
config.pasteFromWordKeepsStructure = false;
//从word中粘贴内容时是否移除格式 plugins/pastefromword/plugin.js
config.pasteFromWordRemoveStyle = false;
//对应后台语言的类型来对输出的HTML内容进行格式化,默认为空
config.protectedSource.push( /<?[sS]*??>/g ); // PHP Code
config.protectedSource.push( //g ); // ASP Code
config.protectedSource.push( /(]+>[s|S]*?</asp:[^>]+>)|(]+/>)/gi ); // ASP.Net Code
//当输入:shift+Enter时插入的标签
config.shiftEnterMode = CKEDITOR.ENTER_P; //可选:CKEDITOR.ENTER_BR或CKEDITOR.ENTER_DIV
//可选的表情替代字符 plugins/smiley/plugin.js.
config.smiley_descriptions = [
':)', ':(', ';)', ':D', ':/', ':P',
'', '', '', '', '', '',
'', ';(', '', '', '', '',
'', ':kiss', '' ];
//对应的表情图片 plugins/smiley/plugin.js
config.smiley_images = [
'regular_smile.gif','sad_smile.gif','wink_smile.gif','teeth_smile.gif','confused_smile.gif','tounge_smile.gif',
'embaressed_smile.gif','omg_smile.gif','whatchutalkingabout_smile.gif','angry_smile.gif','angel_smile.gif','shades_
smile.gif',
'devil_smile.gif','cry_smile.gif','lightbulb.gif','thumbs_down.gif','thumbs_up.gif','heart.gif',
'broken_heart.gif','kiss.gif','envelope.gif'];
//表情的地址 plugins/smiley/plugin.js
config.smiley_path = 'plugins/smiley/images/';
//页面载入时,编辑框是否立即获得焦点 plugins/editingblock/plugin.js plugins/editingblock/plugin.js.
config.startupFocus = false;
//载入时,以何种方式编辑 源码和所见即所得 "source"和"wysiwyg" plugins/editingblock/plugin.js.
config.startupMode ='wysiwyg';
//载入时,是否显示框体的边框 plugins/showblocks/plugin.js
config.startupOutlineBlocks = false;
//是否载入样式文件 plugins/stylescombo/plugin.js.
config.stylesCombo_stylesSet = 'default';
//以下为可选
config.stylesCombo_stylesSet = 'mystyles';
config.stylesCombo_stylesSet = 'mystyles:/editorstyles/styles.js';
config.stylesCombo_stylesSet = 'mystyles:http://www.example.com/editorstyles/styles.js';
//起始的索引值
config.tabIndex = 0;
//当用户键入TAB时,编辑器走过的空格数,( ) 当值为0时,焦点将移出编辑框 plugins/tab/plugin.js
config.tabSpaces = 0;
//默认使用的模板 plugins/templates/plugin.js.
config.templates = 'default';
//用逗号分隔的模板文件plugins/templates/plugin.js.
config.templates_files = [ 'plugins/templates/templates/default.js' ]
//当使用模板时,“编辑内容将被替换”框是否选中 plugins/templates/plugin.js
config.templates_replaceContent = true;
//主题
config.theme = 'default';
//撤销的记录步数 plugins/undo/plugin.js
config.undoStackSize =20;
// 在 CKEditor 中集成 CKFinder,注意 ckfinder 的路径选择要正确。
//CKFinder.SetupCKEditor(null, '/ckfinder/');
二、 一些使用技巧
1、在页面中即时设置编辑器
<script type="text/javascript">
//示例1:设置工具栏为基本工具栏,高度为70
CKEDITOR.replace('<%=tbLink.ClientID.Replace("_","$") %>',
{ toolbar:'Basic', height:70 });
//示例2:工具栏为自定义类型
CKEDITOR.replace( 'editor1',
{
toolbar :
[
//加粗 斜体, 下划线 穿过线 下标字 上标字
['Bold','Italic','Underline','Strike','Subscript','Superscript'],
//数字列表 实体列表 减小缩进 增大缩进
['NumberedList','BulletedList','-','Outdent','Indent'],
//左对齐 居中对齐 右对齐 两端对齐
['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
//超链接 取消超链接 锚点
['Link','Unlink','Anchor'],
//图片 flash 表格 水平线 表情 特殊字符 分页符
['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],
'/',
//样式 格式 字体 字体大小
['Styles','Format','Font','FontSize'],
//文本颜色 背景颜色
['TextColor','BGColor'],
//全屏 显示区块
['Maximize', 'ShowBlocks','-']
]
}
);
</script>
三、精简ckeditor
在部署到Web服务器上时,下列文件夹和文件都可以删除:
/_samples :示例文件夹;
/_source :未压缩源程序;
/lang文件夹下除 zh-cn.js、en.js 以外的文件(也可以根据需要保留其他语言文件);
根目录下的 changes.html(更新列表),install.html(安装指向),license.html(使用许可);
/skins 目录下不需要的皮肤,一般用V2(简单,朴素) ,如果只保留V2则必须在config.js中指定皮肤。
这些东西是免费的,使用相对fckeditor来说,省了类库fckdetior.dll的引用,直接在页面使用js!。。。。。。。但是这个时候
发现上传功能使用不了!原来fckefitor把他以前的功能整合拆分了,ckeditor、ckfinder,两部分,后者是上传功能要钱的!!再
在网上找找,有破解方法,下了个ckfinder放进工程根目录!!在页面添加了
<script type="text/javascript">
//如果是在ASP.NET环境下用的服务器端控件<TextBox>
var editor = CKEDITOR.replace('tbContent');
CKFinder.SetupCKEditor(editor, '/ckfinder/');(这个是在ckeditor基础上加的ckfinder)
</script>
发现还是不行,上传出来错误页面!接着费了好多周折:
ckfinder/config:
public override bool CheckAuthentication()
{
return true;
}
ckeditror/config.js加入:
CKEDITOR.editorConfig = function( config )
{
// Define changes to default configuration here. For example:
// config.language = 'fr';
// config.uiColor = '#AADC6E';
config.filebrowserBrowseUrl = location.hash + '../ckfinder/ckfinder.html';
config.filebrowserImageBrowseUrl = location.hash + '../ckfinder/ckfinder.html?Type=Images';
config.filebrowserFlashBrowseUrl = location.hash+'../ckfinder/ckfinder.html?Type=Flash';
config.filebrowserUploadUrl = location.hash + '../ckfinder/core/connector/aspx/connector.aspx?
command=QuickUpload&type=Files';
config.filebrowserImageUploadUrl = location.hash + '../ckfinder/core/connector/aspx/connector.aspx?
command=QuickUpload&type=Images';
config.filebrowserFlashUploadUrl = location.hash + '../ckfinder/core/connector/aspx/connector.aspx?
command=QuickUpload&type=Flash';
// config.filebrowserWindowWidth = '800';
// config.filebrowserWindowHeight = '500';
};
带颜色的部分是容易出错的地方,开始我没有放..(根目录)
登录后,您就出现在这里。 一直出错后来加了..在前面表示从工程根目录开始。错误解决!! 最后
就是破解了:
下面简单说一下我的破解步骤:(摘自别人)
1、使用FF浏览器中的firebug插件;
2、打开安装好的文件浏览器,发现是调用的ckfinder.html文件;
3、在ckfinder.html中发现<td id ="iO " >这个单元格中写入了一个iframe,src是core/pages/ckffiles.html;
4、继续打开iframe节点在<tr id="he">和<tr id="qu">两个标签之间有一个<tr>没有id,那个叫你给钱的话就在这里面了~;
5、打开 core/pages/ckffiles.html源文件,发现 <tr id="he">和<tr id="qu">之间没有东西,说明这个<tr>是代码生成的;
6、接下来就可以在CKfinder的js里面去找答案了,幸好以前FCKeditor还是比较熟悉,直接到ckfindercorejs文件夹下面找;
7、这个文件夹下面两个js一个是给IE用的,另一个是给其他浏览器的,这个和FCKeditor一样;
8、打开ckfinder_gecko.js搜索"qu",很快就发现了eF=B.getElementById('qu');这句;
9、再往后面看
if ((1==(dK.indexOf(ab.bW.substr(1,1)) % 5)&&window.top[qC+'143141x74x69157x6E'][qF+'163x74'].toLowerCase
().replace(s4,"")!=ab.eo.replace(s4,""))||ab.bW.substr(3,1)!=dK.substr(((dK.indexOf(ab.bW.substr(0,1))+dK.indexOf
(ab.bW.substr(2,1)))*9) % (dK.length-1),1)){en.call(window,qo);};eF.appendChild(D);
这段最后的 appendChild~,差不多就在这里了;
10、前面一大堆条件,执行的就只有 en.call(window,qo);,不是它还是什么~;
11、删除 en.call(window,qo);或者* en.call(window,qo); *,再刷新看看果然没了~;
12、完了再修改ckfinder_ie.js,一样的。
整个CKfinder就简单破解完成了~,如果你觉得这个好用最好还是给点钱买个序列号吧,官方可以给你技术帮助可以节约很多时间的

Javascript 相关文章推荐
jQuery Dialog 弹出层对话框插件
Aug 09 Javascript
jquery 笔记 事件
Nov 02 Javascript
JavaScript高级程序设计(第3版)学习笔记6 初识js对象
Oct 11 Javascript
jQuery中 noConflict() 方法使用
Apr 25 Javascript
单元选择合并变色示例代码
May 26 Javascript
JavaScript 中对象的深拷贝
Dec 04 Javascript
BootStrapTable 单选及取值的实现方法
Jan 10 Javascript
解决webpack无法通过IP地址访问localhost的问题
Feb 22 Javascript
如何在js代码中消灭for循环实例详解
Jul 29 Javascript
关于JSON解析的实现过程解析
Oct 08 Javascript
VUEX采坑之路之获取不到$store的解决方法
Nov 08 Javascript
微信sdk实现禁止微信分享(使用原生php实现)
Nov 15 Javascript
JavaScript之编码规范 推荐
May 23 #Javascript
javascript的数据类型、字面量、变量介绍
May 23 #Javascript
网页源代码保护(禁止右键、复制、另存为、查看源文件)
May 23 #Javascript
通过js动态操作table(新增,删除相关列信息)
May 23 #Javascript
JavaScript基础语法让人疑惑的地方小结
May 23 #Javascript
利用javascript解决图片缩放及其优化的代码
May 23 #Javascript
JavaScript 图像动画的小demo
May 23 #Javascript
You might like
谈谈PHP语法(3)
2006/10/09 PHP
针对初学PHP者的疑难问答(2)
2006/10/09 PHP
php中使用preg_match_all匹配文章中的图片
2013/02/06 PHP
PHP和JavaScrip分别获取关联数组的键值示例代码
2013/09/16 PHP
PHP date函数常用时间处理方法
2015/05/11 PHP
7个鲜为人知却非常实用的PHP函数
2015/07/01 PHP
关于PHP文件的自动运行方法分析
2016/05/13 PHP
微信自定义菜单的创建/查询/取消php示例代码
2016/08/05 PHP
浅谈PHP各环境下的伪静态配置
2019/03/13 PHP
Thinkphp整合阿里云OSS图片上传实例代码
2019/04/28 PHP
style、 currentStyle、 runtimeStyle区别分析
2010/08/01 Javascript
JavaScript中几个重要的属性(this、constructor、prototype)介绍
2013/05/19 Javascript
如何让浏览器支持jquery ajax load 前进、后退功能
2014/06/12 Javascript
事件委托与阻止冒泡阻止其父元素事件触发
2014/09/02 Javascript
JavaScript中document对象使用详解
2015/01/06 Javascript
jQuery on()方法示例及jquery on()方法的优点
2015/08/27 Javascript
JavaScript中的this,call,apply使用及区别详解
2016/01/29 Javascript
jquery中validate与form插件提交的方式小结
2016/03/26 Javascript
Bootstrap模仿起筷首页效果
2016/05/09 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
2016/08/02 Javascript
node.js报错:Cannot find module 'ejs'的解决办法
2016/12/14 Javascript
基于Vue2实现的仿手机QQ单页面应用功能(接入聊天机器人 )
2017/03/30 Javascript
JavaScript用200行代码制作打飞机小游戏实例
2017/06/21 Javascript
详解angular脏检查原理及伪代码实现
2018/06/08 Javascript
详解利用eventemitter2实现Vue组件通信
2019/11/04 Javascript
[00:57]林俊杰助阵DOTA2亚洲邀请赛
2015/01/28 DOTA
跟老齐学Python之dict()的操作方法
2014/09/24 Python
Linux下用Python脚本监控目录变化代码分享
2015/05/21 Python
matplotlib中legend位置调整解析
2017/12/19 Python
django启动uwsgi报错的解决方法
2018/04/08 Python
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
2019/08/06 Python
个人简历自我评价
2014/02/02 职场文书
2015年学校减负工作总结
2015/05/19 职场文书
周末问候语大全
2015/11/10 职场文书
Windows Server 2022 超融合部署(图文教程)
2022/06/25 Servers