<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-57  評論-129  文章-0  trackbacks-0

    今天無意間打開了一個CSDN上的個人blog,發現窗口無法拖動,Firefox的標簽頁也無法切換。

    查看代碼:

    <script type="text/javascript">Include("Csdn.Blog.UserOnline");</script>  
    <script type="text/javascript">Include("Csdn.Blog.ShowmeDataDeal");</script>

     

    看到Include函數,馬上可以想到,它很可能使用了動態包含腳本的設計。
    //http://blog.csdn.net/scripts/jsframework.js  
    window.Include=function(namespace, path)  
    {  
       ..  
    };  
    S.load
    =function(namespace, path)  
    {  
         
    }  

    仔細閱讀這兩個函數代碼,發現它是通過XMLHttpRequest對象同步裝載腳本資源的(對IE,它采用userdata緩存優化)。而這必將導致一種完全阻塞問題(這種問題我在仍外一篇blog上描述過:http://jindw.javaeye.com/blog/66702)。

    說到阻塞問題,我想大家可能會以為只是一種下載延遲,其實不然。
    下載延遲不是完全阻塞,瀏覽器依然可以響應用戶事件。而同步XHR請求阻塞是一種完全的阻塞。
    瀏覽器在腳本運行與事件響應共用同一個線程(我的猜測)。任何腳本尚在運行時(包括被同步XHR請求阻塞的時間),瀏覽器將無法響應任何用戶事件(無法拖放窗口、切換標簽、重畫頁面等等,就像程序死了一樣)。與普通的下載延遲造成的阻塞,感覺明顯不同。

    我對這個問題可以說深有體會,起初,在構建JSI1的項目站點時。因為網站放在sourceforge上,訪問數度不是一般的慢,幾個簡單的例子,瀏覽器就要完全阻塞好幾妙鐘。正是厭惡這種完全阻塞的現象,我才開發了JSI2。

    事實上,現在的一堆堆js框架中,采用XHR同步裝載資源的有不少,JSVM、dojo、a9engine、hax的pies;其中JSVM, dojo都提供打包工具,將可能裝載的腳本打包到啟動文件中,所以也可以避免XHR同步請求。不過這樣也就失去了部分動態裝載的意義了。

    總之,我非常討厭這種完全阻塞現象,認為這個嚴重影響用戶體驗。
    可能也有些主觀因素把,希望聽聽大家的看法。


    posted on 2007-08-12 22:22 金大為 閱讀(797) 評論(0)  編輯  收藏 所屬分類: JavaScript
    主站蜘蛛池模板: 亚洲精品国产精品乱码不卡√ | 成年女人午夜毛片免费看| 亚洲国产精品VA在线观看麻豆| 又粗又长又爽又长黄免费视频| 又大又硬又爽免费视频| 国产AV日韩A∨亚洲AV电影| 国产三级电影免费观看| 国产在亚洲线视频观看| 亚洲AV无码成人精品区大在线| 日韩电影免费在线观看网址 | 亚洲精品国产av成拍色拍| 午夜爱爱免费视频| 久久精品亚洲日本波多野结衣| 免费高清av一区二区三区| 亚洲精品无码av片| 人人狠狠综合久久亚洲高清| 国产精品小视频免费无限app| 亚洲伊人久久精品影院| 三年片在线观看免费观看大全动漫| 亚洲视频免费一区| 永久免费av无码不卡在线观看| MM1313亚洲精品无码久久| av在线亚洲欧洲日产一区二区| 永久免费A∨片在线观看| 91亚洲精品视频| 免费观看的a级毛片的网站| 一级毛片a免费播放王色电影| 亚洲线精品一区二区三区影音先锋 | 99久久精品免费视频| 亚洲www77777| 亚洲色无码专区在线观看| 永久免费在线观看视频| 亚洲日韩国产欧美一区二区三区 | 在线观看免费精品国产| 国产乱妇高清无乱码免费| 亚洲精品美女久久久久| 免费一区二区三区四区五区| 国产无遮挡无码视频免费软件| 亚洲人成77777在线播放网站不卡 亚洲人成77777在线观看网 | 国产精品色午夜免费视频| 国产无遮挡裸体免费视频在线观看 |