我正在寻找一个JavaScript函数,给定一个字符串返回一个压缩(更短)的字符串.
我正在开发一个Chrome网络应用程序,可以将长字符串(HTML)保存到本地数据库.出于测试目的,我试图压缩存储数据库的文件,并且缩小了五倍,所以我认为如果我压缩存储的东西,它将有助于保持数据库更小.
我在JavaScript中找到了LZSS的实现:http://code.google.com/p/u-lzss/("U-LZSS").
当我使用简短的示例字符串(解码===编码)"手动"测试它时它似乎有效,而且它在Chrome中也相当快.但是当给出大弦(100 ko)时,它似乎会混乱或混合弦的后半部分.
是否有可能U-LZSS期望短字符串并且不能处理更大的字符串?是否可以调整一些参数以移动上限?
我正在尝试使用Sencha Touch(基于ExtJs)构建一个移动"内容"应用程序,用于显示大部分文本页面.我熟悉JQuery和JQTouch; 我以前从未使用过ExtJs.
什么是最好/最快的入门方式?
我从"图标"演示开始,并且能够添加一个滚动属性('垂直'),以便在顶部和底部标签之间滚动内容(这实际上是让我参与Sencha Touch:具有"固定"工具栏的能力).
但现在呢?如何更新内容?
在ExtJs教程中(这里,靠近页面底部),它表示可以对Element对象进行操作以将内容加载到元素中; 但在"图标"Sencha Touch演示中似乎没有以相同的方式使用.
任何帮助赞赏!
虽然此代码在触摸屏幕时产生预期的"1"行为:
document.getElementById('someNodeId').addEventListener('touchmove', touch, true);
function touch(evt) {
evt.preventDefault();
alert(evt.changedTouches.length);
}
Run Code Online (Sandbox Code Playgroud)
使用jQuery选择器的相同代码:
$('#someNodeId').bind('touchmove', touch);
Run Code Online (Sandbox Code Playgroud)
产生错误:"TypeError:表达式结果'evt.changedTouches'[undefined]不是对象".
(Device = iPod Touch OS 3.1.3(7E18); jQuery 1.4.2).
这怎么可能,我做错了什么?
据我所知,一个元素contentEditable="true"是某种WYSIWYG HTML编辑器.它会生成与发出的命令相对应的相关HTML标记.
例如,如果选择文本然后按Ctrl+ B,则所选文本将放置在<b></b>标记之间.
我需要在结果文本中没有样式标记.如何抑制,劫持或控制这些命令的行为?
我可以做的其他事情:
contentEditable而是使用textarea.但除此之外,还contentEditable可以很容易地突出显示正在编辑的段落.这对于一个人来说要困难得多textarea.我正在构建一个小工具,它将使用wget下载文件,从不同的文件中读取URL.相同的URL可能存在于不同的文件中; 该URL甚至可以多次出现在一个文件中.多次下载页面(每次在列表中找到其URL)都是低效的.
因此,简单的方法是保存下载的文件并指示wget如果已经存在则不再下载它.
这将非常简单; 但是url非常长(许多GET参数),因此不能用于文件名(wget给出错误'无法写入... []文件名太长').
所以,我需要重命名下载的文件.但是要使缓存机制起作用,重命名方案需要实现"一个url <=>一个名称":如果给定的URL可以有多个名称,则缓存不起作用(即,如果我只是按顺序对文件进行编号)他们被发现,我不会让wget识别哪些网址已被下载).
最简单的重命名方案是计算文件名的md5哈希值(而不是文件本身的哈希值,这是md5sum所做的); 这将确保文件名是唯一的,并且给定的URL将始终具有相同的名称.
可以在Perl等中执行此操作,但是可以直接在bash中使用或使用系统实用程序(RedHat)吗?
我将在CD-Rom上提供一组静态HTML页面; 这些页面需要完全可见,无需任何Internet访问.
我想为这些页面的内容提供全文搜索(类似于Lucene),这些页面应该在CD-Rom中"正常工作"而客户端计算机上没有安装软件.
javascript中的搜索引擎实现将是完美的解决方案,但我很难找到任何看起来坚固/当前/流行......?
但这两个项目似乎都不活跃
除了javascript中的特定搜索引擎之外,另一个解决方案是能够从javascript访问本地Lucene索引:索引本身将使用Lucene构建并与HTML文件一起复制到CD-Rom.
编辑:自己构建(见下文).
带有"实时预览"的在线编辑器:左侧有一个textarea,右侧有一个预览div.每当textarea更改时,预览都会更新.
这适用于小型文件; 然而,对于很长的文档,它变得迟钝,因为预览有很多不断重新绘制的DOM元素.
最好只发送到预览,当前可见的textarea部分(因为它是需要预览的部分).
有一种启发式方法来获取textarea的第一个可见行:
然而,这仅适用于"短"线,即不包裹的线.一般来说,文本区域中"行" 的数量不是换行符的数量 ; 一条长线,没有换行,包裹并可能占据许多"线条空间".
人们可以尝试计算一条线占据的"线条空间"的平均数量(换行符之间的平均字符数,textarea的宽度,字体的大小......),但这是非常不精确的.
有没有办法知道textarea中第一个和最后一个可见字符的位置?
(这是前一个问题的后续行动).
我能够成功地使用OpenCV/Hough变换来检测图片中的线条(扫描文本); 首先,它会检测到许多行(每行文本至少有一行),但通过反复试验调整"阈值"参数,它现在只检测"真实"行.
('threshold'参数取决于图像大小,如果必须处理不同分辨率的图像,这是一个问题,但这是另一个故事).
我的问题是霍夫变换有时检测到只有一条线的两条线; 这两条线彼此非常接近并且(显然)平行.
=>我怎样才能确定两条线几乎是平行的并且彼此非常接近?(这样我只能保留一个).
我正在构建一个操作页面内容的Chrome扩展程序,但我感兴趣的内容只会在用户单击按钮并且数据已从Ajax调用加载后显示.
目前,扩展程序使用SetTimeout监视页面,但它很笨拙.
扩展程序是否可以知道何时启动Ajax调用以及何时结束?或者扩展程序能否以某种方式从页面接收事件?
当一个东西在contentEditable元素中丢弃时(拖动后)会触发什么事件?
我说的是普通的拖放,而不是HTML5拖放(任何元素都可以拖动); 用例很简单:
我可以轮询div来看看那里有什么东西不干净,但是它很贵而且"丑陋"; 肯定有一个事件会在发生跌落时触发......?
我有55000个图像文件(JPG和TIFF格式),这些图像来自一本书.
每个页面的结构是这样的:
一些文字
---(水平线)---
一个号码
一些文字
---(水平线)---
另一个号码
一些文字
在任何给定页面上可以有0到4条水平线.
我需要找到数字,在水平线下方.
但是,数字严格遵循,从第一页开始,所以为了找到数字,我不需要阅读它:我只能检测水平线的存在,这应该比更容易和更安全.试图OCR页面来检测数字.
该算法基本上是:
for each image
count horizontal lines
print image name, number of horizontal lines
next image
Run Code Online (Sandbox Code Playgroud)
问题是:什么是最好的图像库/语言来做"计数水平线"部分?