Loading...

2009年3月11日星期三

边学边改blog--初学者的第一次js心得,闲谈踩*过程

第一次写js,好麻烦啊~~~~
事情起因:不知道是多少天前了,HATA走去逛了一下google code,看见translation中的api很简单:
google.language.translate(text,"es","en",function(result){
if(!result.error){
translation.innerHTML=result.tarnslated;
}
});

HATA就开始打算做一个翻译post的插件,毕竟HATA用过某g和某y的翻译工具,感觉都会影响了HATA的页面的排版(因为这个问题,HATA把一些widget都撤下来了)。NND,因为这个奇怪的想法,HATA这几天被卷入困扰的漩涡(orz)。新人学习,处处碰壁啊~

墙壁1:排版乱了。
HATA开始用"。"把句子一句一句分开给google吃,然后用"translation.innerHTML += result.tarnslated"把某g拉的屎都一坨一坨的回收回来。然后test一下整合好的效果如何。某H:"恩,都乱了。"后来发现,原因是这样的。例如这样一句:<div>g兄,你好吗?快给我便便去。(千年杀!)</div>因为我是用"。"句号分割句子的,所以在<div>g兄,你好吗?快给我便便去。的时候,HATA就把句子截了下来给某g吃,然后google翻译后,执行用"translation.innerHTML += result.tarnslated"的时候,程序就自动补上了</div>,(千年杀!)结果就去了下一段。。
HATA最后的解决方法是:"translation.innerHTML = translation.innerHTML.substring(0,end)+result.tarnslated"
墙壁2:str.indexOf("。")什么也找不到。
str.indexOf("")就是找字符串(str)中某字符的第一个位置。例如:str.indexOf("HATA")程序就会把HATA第一次出现的位置告诉你。但是HATA输入str.indexOf("。")后返回值都是-1,是双字节的原因吗?不是,HATA输入str.indexOf("拉登")试了下,"拉登"就出来了。什么原因?HATA不知道,最好解决方法:str.indexOf("\u3002")句号就出来了。这个是什么?打开某win的"开始-》所以程序-》附件-》TrueType造字程序",然后字符集选Unicode(HATA的meta标签里字符集是UTF-8),然后打开,窗口-》参照,在形状里面输入"。"句号,代码3002就出来了,这个就是"。"的UTF-8的字符集代码。
墙壁3:某g还是吃不下
面对一大段的代码,某g还是吃不下,只好也针对下"<",">"这些符号,分得再细一点翻译。标签部分则进行直接的搬字过纸。这样代码段就复杂了。。。HATA这里就没有理会什么节点啊,父子关系的,就把它当一段字符的看。HATA素是野蛮。
墙壁4:js的执行顺序啊~
因为复杂了,所以js的执行顺序也开始囧起来了。这个HATA终于翻到第5道墙了。相信这是最后一道墙壁了。距离beta版的代码应该不远啦(lol)。最后不会来一道叹息之墙就好了。。。虽然HATA这里好阳光~

道歉:恩,基本上这就是HATA近几天HATA在blog上做的事情。特别是这两天,加了alert的语句做测试。搞得blog经常会弹出窗口。非常麻烦。在次HATA决定再次向某g伸手拿多一个blog,以作测试用途。HATA 菜谱从此会恢复正常。
原创文章如转载,请注明:转载自HATA菜谱

没有评论:

发表评论