摘要: SuperSocket 是一个轻量级, 跨平台而且可扩展的Socket 服务器程序框架。你无须了解如何使用 Socket, 如何维护 Socket 连接和 Socket 如何工作,但是你却可以使用 SuperSocket 很容易的开发出一款 Socket 服务器端软件,例如游戏服务器,GPS 服务器, 工业控制服务和数据采集服务器等等。 阅读全文
posted @ 2017-11-11 13:12 搵中求胜 阅读(16946) 评论(44) 推荐(14) 编辑
摘要: 最近大家流行把项目开源,我也来玩玩。只是开源公司项目不好,小弟只好从公司项目经验上另外弄出一套练习开源给大家。这个项目可以做简单的团队任务系统(做一些简单的任务分配,没经过严格测试、功能单一别喷啊,有想用的可以自己往里面加-估计想用的话还得做任务进度统计,生成点图表什么的)。这个项目用到了EF、We... 阅读全文
posted @ 2014-06-26 16:04 搵中求胜 阅读(6729) 评论(40) 推荐(24) 编辑
摘要: 首先要载入jquery//半Lambda表达式的Javascript,返回ListArray.prototype.where=function(s){returneval("(jQuery.grep(this,function(o,i){return"+s+";}))");}除去空格仅有98个字符(这扩展够精简的了,也可以拆出来用jQuery.grep但如果页面上很多地方用到,代码就多了)有人说依赖jQuery不好用(现在多少系统写JS必备jquery,这个不说)有人说eval效率差(请你自己试试,能不能在项目中使用,反正这个where我在项目中用很多, 阅读全文
posted @ 2013-01-29 12:34 搵中求胜 阅读(3803) 评论(2) 推荐(2) 编辑

Chrome+IE默认支持粘贴剪切板中的图片,但是我要发布的文章存在word里面,图片多达数十张,我总不能一张一张复制

我希望打开文档doc直接复制粘贴到富文本编辑器,直接发布

 

感觉这个似乎很困难,因为Ueditor本身不支持,粘贴后直接就是空白,这里面一定有原因。

好,开始尝试UMeditor,Chrome只能获得本地路径,无法读取文件。

https://ueditor.baidu.com/website/umeditor.html(有兴趣可以试试)

 

 

难道就这么失败了?

,但是我意外发现UMeditor竟然支持粘贴word中的多张图片(仅支持IE11,不支持IE10以下版本、以及Chrome等)

切换HTML,会看到你的图片被组织成base64

nice,机会来了,既然IE支持复制word中的多张图片直接粘贴base64,既然有了base64我们就有办法上传转图片啦!

那么我们来改造Ueditor,让他支持IE11(总比没得用强吧)

打开你的ueditor.all.js(1.4.3版本以下行号根据自己使用的版本可能不同)

1、注释掉14679行(暂时不明确有什么不良影响)

//执行默认的处理
//me.filterInputRule(root);

2、在28725行插入以下代码(如果是使用IE11粘贴会得到base64,先用占位符占位,再逐个把base64专成Blob文件并上传,上传完成再替换为你的img属性src为服务器图片url)

                //ie11粘贴图片base64,此处用于上传
                if (baidu.editor.browser.ie11above) {
                    var eles = editor.document.getElementsByTagName('img');
                    var imgs = [];
                    for (var i = 0; i < eles.length; i++) {
                        var a = eles[i];
                        var src = a.getAttribute('src');
                        if (src.indexOf('data:image') == 0) {
                            a.setAttribute('width', a.width);
                            a.setAttribute('height', a.height);
                            a.className = 'loadingclass';
                            a.setAttribute('_src', src);
                            a.setAttribute('src', me.themePath + me.theme + '/images/spacer.gif');
                            imgs.push(a);
                        }
                    }
                    function parseBlob(data) {
                        var arr = data.split(','), mime = arr[0].match(/:(.*?);/)[1],
                            bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
                        while (n--) {
                            u8arr[n] = bstr.charCodeAt(n);
                        }
                        return new Blob([u8arr], { type: mime });
                    }
                    var fdoc = editor.container.ownerDocument;
                    var div = fdoc.getElementById('ie11up_step');
                    if (div == null) {
                        div = fdoc.createElement('div');
                        fdoc.getElementsByClassName('edui-toolbar')[0].appendChild(div);
                        div.up = 0;
                        div.str = '图片上传中...(#/' + imgs.length + ')';
                        div.style.fontSize = '12px';
                    }
                    function upNextOne() {
                        if (imgs.length == 0) {
                            div.parentNode.removeChild(div);
                            return;
                        }
                        var a = imgs[0];
                        imgs = imgs.slice(1, imgs.length);
                        var xhr = new XMLHttpRequest();
                        var fd = new FormData();
                        fd.append("upfile", parseBlob((xhr.a = a).getAttribute('_src')), 'paste.png');
                        xhr.upload.addEventListener("progress", function (a) {
                        }, false);
                        xhr.addEventListener("load", function () {
                            var d = JSON.parse(this.response);
                            if (d && d.state == 'SUCCESS') {
                                this.a.setAttribute('src', d.url);
                                this.a.removeAttribute('_src');
                                this.a.removeAttribute('class');
                                div.innerText = div.str.replace('#', ++div.up);
                                upNextOne();
                            }
                        }, false);
                        xhr.open("POST", editor.getActionUrl('uploadimage'));
                        xhr.send(fd);
                    }
                    if (imgs.length > 0)
                        upNextOne();
                }

3、处理ueditor提供的uploadimage方法

大功告成

客户已经使用半年,没有问题,非常有用,非常方便的功能,希望博客园也改良一下TinyMCE。

 

posted @ 2018-11-29 13:45 搵中求胜 阅读(9853) 评论(8) 推荐(3) 编辑
摘要: 项目当中有一些数据,比如多语言翻译,要求做语言包,起初当然是做成i18n.js文件,但是每个阶段版本更新都会增加一些key,那么发布的时候只能给<script>的src增加?20180913版本号,令客户端加载新的js。 这么做其实很不方便,平时发布可能忘记更新母版的script版本号。 现在这里有 阅读全文
posted @ 2018-09-13 12:10 搵中求胜 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 有关WebApp的开发,大多数人都用了第三方框架,如Cordova等。我这里没有用到这类框架,而是新建了一个WebView嵌入Assets(本地资源)来完成这个App,由于第一个练习App希望对初学者有所帮助。这是一个快递快速查询的App,现在添加了几个比较火的快递,调用查询接口来自kuaidi10... 阅读全文
posted @ 2015-12-14 14:33 搵中求胜 阅读(6498) 评论(6) 推荐(10) 编辑
摘要: 一个Entity Framework、ADO.NET查询性能测试 阅读全文
posted @ 2014-07-30 15:05 搵中求胜 阅读(1002) 评论(2) 推荐(0) 编辑
摘要: 直接上图,上代码了,代码量少,不解释那么多了 asd asd 阅读全文
posted @ 2014-05-29 11:32 搵中求胜 阅读(513) 评论(0) 推荐(0) 编辑
摘要: 一直都是在博客园看文章,几乎每个两三天都会来,不管是看技术分享还是看经验总结,我觉得这真是个好地方。工作两年,24.5岁,目前达到8.5K(即10W)的.net web。文章水平不好,各位见谅了,三级英语考了三次的我没胆量考四级。湖南长沙一垃圾大专读软件技术(.net方向)毕业,然后在学校应聘深圳富... 阅读全文
posted @ 2014-02-08 13:02 搵中求胜 阅读(7613) 评论(81) 推荐(17) 编辑
点击右上角即可分享
微信分享提示