Posts Tagged ‘JavaScript’

由IE一例处理comment节点的bug得到的结论

近期处理一个项目,需要“翻译”页面的注释节点。功能在Firefox下一切正常,项目进行非常顺利。拿到IE全系列下,却非常不正常,把注释翻译成ELEMENT Node,页面立刻飞掉。检查不出来原因,抓狂了好几天。
后来发现,问题出在IE渲染li的时候。我们的项目里,有时候要求注释节点需要插入在li的后面。虽然这不太标准,但是实际应用中,也是没办法的事。IE6+会把注释节点包进li里面,真是无语。
例如页面上的代码:
<ul id=”test”>
<!– comment_begin –>
<li>asdf</li>
<li>asdf</li>
<li>asdf</li>
<!– comment_end –>
</ul>
试试document.getElementById(“test”).innerHTML,弹出:
<!– comment_begin –>
<LI>asdf
<LI>asdf
<LI>asdf <!– comment_end –></LI>

Read the rest of this entry »

开发WYSIWYG编辑器可能遇到的问题

最近从头开发了一个简单实用的页面可视化编辑器,感觉从中学到了不少东西。功能就是用一个脚本把前端页面的某些块搞成可以编辑的状态。遇到了几个主要的问题,让我印象最深刻。汇总一下吧:
Firefox 3+开始支持contenteditable属性,这让可视化编辑变得简单。想要“可视化”一个节点,只要给它赋上contenteditable属性即可。如果你想让某一个页面上实现简易的在线编辑功能,那么思路就是:
1. 前端页面,通过JavaScript给需要编辑的节点赋上contenteditable属性,为true。注意这里要用o.contentEditable = “true”,用setAttribute在IE下设置不成功。
2. 用js生成一个按钮工具条,包括一些常用的按钮,例如加粗、修改链接等等。用document.execCommand来执行一些常用的命令,但可用的不多,只有createlink, unlink, bold等。需要的话,还是自己写。
3. 需要弹出对话框的指令,例如修改链接,用行内对话框(inline popup)来实现,不用window.open。一来比较方便,二来可以避免某些浏览器把弹窗block掉。

Read the rest of this entry »

推荐给Web开发人员的Firefox扩展

上次在北京的Open Party上给大家分享了一些Firefox扩展,这些扩展包括Firebug、Webdeveloper、Live HTTP Headers等等,对我来说,没有这些东西就没法干活。所以我再一次地、正式地向大家推荐。
Firebug
用Firefox的人都知道。用Firebug可以查看节点信息,查看网络交互等等。他强大的调试功能在各种浏览器中,算是最好用的。回头有必要的话,我会专门总结一下JavaScript调试经验。
Web Developer
这个工具条包含了非常全面的工具。对于我来说,经常用到的大概是disable cache,View Form Info,Resize,View Frame Source等等。你想用的DOM查看和操作工具,这里基本都有。
MeasureIt

Read the rest of this entry »

老田的博客

终于有一点时间写一些东西。写东西的目的,除了记录下来一些想法,主要是还是催促自己学习。技术上的沉淀是必要的,互联网的跟进观察更是必须的。
博客的副标题:网络、生活、创业、技术。
首先,我们每天面对的互联网,有很多新奇的小玩意儿。比如中国的Twitter模仿者们,比如国外炒得火爆的那些事件。这些东西记录下来,还是很有意思的。另外老田的博客争取吸收一些国外优秀的东西过来,给自己学习,也给大家介绍。
网络来源于生活。让我想起来前些天Mr.6推荐的卖珠子的网站,夫妇二人住在华盛顿州的不知名小镇,一边快乐地生活,一遍在网上卖串起来的小珠子,也卖到了全球最大,获得了很大的成功。这同时也说明,不考虑成功的几率有多大,互联网的创业门槛是比较低的。这吸引了一大批人加入到互联网创业的行列,也引发我们对互联网创业的思考。“思考是必须的”,特别是……冷静的思考。
作为一个前端技术的开发者,我依旧关注于JavaScript等前端技术。JavaScript是个很强大的东西,但大多数程序员尤其是国内的程序员,都把它当作“不用学就可以用”的东西。我也曾误入此途。当我发现js可以写的那样美妙,可以那样强大,甚至Firefox的逻辑都是用js做的,我震惊了。学无止境啊。这里也算是一个记录学习笔记的地方啦。

Read the rest of this entry »