- From: OOO <othree@gmail.com>
- Date: Fri, 22 Oct 2010 20:04:24 +0800
- To: Ethan Chen <chief@ethantw.net>
- Cc: John Hax <johnhax@gmail.com>, 中文HTML5同樂會ML <public-html-ig-zh@w3.org>
我是感覺不到這樣的必要性啦 focus 而言有 autofocus 或許還有其他例子? 我剛剛看了一下 DOM Event Level 3 DOMNodeInsertedIntoDocument[1] 這個事件似乎有點接近 只是不知道定義上第一次 parse 文件樹時算不算就是 [1]:http://www.w3.org/TR/DOM-Level-3-Events/#event-type-DOMNodeInsertedIntoDocument 在 2010年10月22日下午7:47,Ethan Chen <chief@ethantw.net> 寫道: > 实际上最好能这样: > <head> > <script> > document.addEventListener('elementstart', function (event) { > var e = event.target > if (e.tagName.toLowerCase() == 'input' && e.id="search") e.focus() > }, false) > </script> > </head> > > 這能用在<link type="text/css" href="./style.css">上嗎?就是在style.css載入完成之後。 > 尤其有時候DOM已經ready了,樣式表還是沒有下載完成。 > > > 在 Oct 22, 2010 7:35 PM 時, John Hax 寫到: > > 劭非的意思并不是整个dom ready,而是单个元素可用的事件。 > > 这种需求是存在的。因为要对有些元素做特殊脚本操作,越早越好。 > > 比如 autofocus > > 目前为了尽早focus,我们必须: > <input id="search" ...> > <script>$('#search').focus()</script> > 实际上最好能这样: > <head> > <script> > document.addEventListener('elementstart', function (event) { > var e = event.target > if (e.tagName.toLowerCase() == 'input' && e.id="search") e.focus() > }, false) > </script> > </head> > 这个是elementstart,即当时element的子元素还没有ready,只能获得该element的属性。 > 另一种是elementend,即当时element已经完全ready。 > 举个需求的例子,根据预先指定的方式对table中的项目进行排序: > var sortTableBy = location.hash > document.addEventListener('elementend', function (event) { > var e = event.target > if (e.tagName.toLowerCase() == 'table') { > sortTableByCol(e, sortTableBy) > } > }, false) > > > > 目前标准是没有elementstart/end这种事件的。只有htc(IE6,IE7)和xbl(FF)才能干elementend这种事情。 > > 2010/10/22 OOO <othree@gmail.com> >> >> 現在有 DOMContentLoaded 事件 >> 觸發時間是在 文件樹建好 ,開始 render 前 >> >> jQuery 的 Ready 就是會先看瀏覽器之不支援這個事件 >> 不支援的話(IE)會改用 IE hack >> 一直試著 scroll >> 沒讀完的話 scroll 都會失敗 >> >> 這部份的議題應該是 DOM 的部份 >> 和 script 標籤沒關係才是 >> >> script 標籤現在有比較不同的是 async 和 defer 兩個屬性 >> >> 在 2010年10月22日下午6:59,周裕波 <itchina110@gmail.com> 寫道: >> > 我记不太清楚了,好像现在是引入了这样一个事件,有点类似jquery的ready方式 >> > 在 2010年10月22日 下午6:55,劭非程 <csf178@gmail.com>写道: >> >> >> >> 大家应该都遇到过一种场景,一段脚本要在某一元素创建以后立即执行: >> >> >> >> <div id="content"> >> >> </div> >> >> <script type="text/javascript"> >> >> //do something >> >> </script> >> >> >> >> 这是一种很糟糕的做法,至少有2个严重问题: >> >> >> >> >> >> 1.script标签将阻塞渲染线程,因为要照顾到document.write这种邪恶的写法,后面的渲染必须等待脚本执行完毕,这对于引用单独JS文件的script标签更加致命,渲染必须等待JS文件下载。 >> >> >> >> 2.行为和表现无法彻底分离,JS代码也无法和HTML代码分离 >> >> >> >> 所以我在想是否可以引入一事件 >> >> >> >> body.onElementLoad=function(element) { >> >> if(element.id=="content"){ >> >> //do something >> >> } >> >> } >> >> >> >> 大家说说自己的想法 >> > >> > >> > -- >> > 此致 >> > >> > Mr. Zhou YuBo - 周裕波 >> > >> > 邮件:itchina110@gmail.com >> > 电话:13717517540 >> > >> >> >> >> -- >> OOO > > > -- OOO
Received on Friday, 22 October 2010 12:04:51 UTC