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

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

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

    Vincent Thinking

    All about Vincent's work and life

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      34 隨筆 :: 0 文章 :: 183 評論 :: 0 Trackbacks

    什么是AHAH?
    AHAH:(Asychronous HTML and HTTP)
    簡單來說,AHAH是一種利用JavaScript動態更新web頁面的技術.他通過XMLHTTPRequest來獲得動態的html,填充到 web頁面中。

    和AJAX的關系?
    AHAH被認為是一種比AJAX(Asynchronous JavaScript and XML)更簡單的web開發方式,嚴格意義上來說AHAH是AJAX的一個子集,因為(X)HTML本身及時一個特殊形式的XML,但是最為子集的AHAH卻有特殊的和有用的特性:
    1.無需定義XML schemas可以使設計時間大幅減少

    2.使用已有的HTML頁面從而避免必須提供特殊的Web服務

    3.所有的數據通過瀏覽器可識別的HTML傳輸,從而可以很容易的調試和測試

    4.HTML直接包含在頁面的DOM對象中,無需解析

    5.HTML設計者可以使用CSS來格式化顯示,無需程序員使用XSLT轉換

    6.所有的處理都在服務器端完成,客戶端不需要編寫任何程序

    實事上,任何內容的最終都是要轉化成瀏覽器可識別結果,展現在瀏覽器上。很難想象出轉化成自定義的XML格式比HTML有什么優點

    參考ahah.js 和 jah.js

    Send AHAH Request

     1 function ahah(url,target) {
     2    // native XMLHttpRequest object
     3    document.getElementById(target).innerHTML = 'sending';
     4    if (window.XMLHttpRequest) {
     5        req = new XMLHttpRequest();
     6        req.onreadystatechange = function() {ahahDone(target);};
     7        req.open("GET", url, true);
     8        req.send(null);
     9    // IE/Windows ActiveX version
    10    } else if (window.ActiveXObject) {
    11        req = new ActiveXObject("Microsoft.XMLHTTP");
    12        if (req) {
    13            req.onreadystatechange = function() {ahahDone(target);};
    14            req.open("GET", url, true);
    15            req.send();
    16        }
    17    }
    18 

    Receive AHAH Request
     1 function ahahDone(target) {
     2    // only if req is "loaded"
     3    if (req.readyState == 4) {
     4        // only if "OK"
     5        if (req.status == 200 || req.status == 304) {
     6            results = req.responseText;
     7            document.getElementById(target).innerHTML = results;
     8        } else {
     9            document.getElementById(target).innerHTML="ahah error:\n" +
    10                req.statusText;
    11        }
    12    }
    13 }

    Executing Javascript

    由于瀏覽器在插入HTML的時候并不會執行<script>標簽中的代碼,所以你可以利用下面的方法來解決 document.getElementById(target):

     1 var bSaf = (navigator.userAgent.indexOf('Safari') != -1);
     2 var bOpera = (navigator.userAgent.indexOf('Opera') != -1);
     3 var bMoz = (navigator.appName == 'Netscape');
     4 function execJS(node) {
     5   var st = node.getElementsByTagName('SCRIPT');
     6   var strExec;
     7   for(var i=0;i<st.length; i++) {     
     8     if (bSaf) {
     9       strExec = st[i].innerHTML;
    10     }
    11     else if (bOpera) {
    12       strExec = st[i].text;
    13     }
    14     else if (bMoz) {
    15       strExec = st[i].textContent;
    16     }
    17     else {
    18       strExec = st[i].text;
    19     }
    20     try {
    21       eval(strExec);
    22     } catch(e) {
    23       alert(e);
    24     }
    25   }
    26 }
    27 

    注意:
    1.由于IE返回的tag標志都是大寫,所以你必須搜索SCRIPT而不是script.在firefox中也保留大寫的形式.
    2.不要用//的注釋方式,用/**/的方式來代替,在每一個聲明句后面加';'

    (未完..)
    posted on 2006-01-09 09:31 Vincent Thinking 閱讀(71743) 評論(2)  編輯  收藏 所屬分類: Work

    評論

    # re: AHAH 介紹 2006-02-09 20:43 charon~
    兄弟,你這個用innerHTML載入javascript代碼是工作不了的.
    在ie下面,如果innerHTML = xxx,并且xxx中包含script標簽的話,在設置的時候都會被丟棄,此時再用getElementById取回Node,其node.getElementsByTagName('SCRIPT');是空。
    而且,這片文章是翻譯的吧  回復  更多評論
      

    # re: AHAH 介紹 2006-02-10 09:57 Vincent Thinking
    Hi charon:

    腳本確實被插入到了 innerHTML 中,可以 alert 一下看看。但是會有一種例外情況存在,那就是如果腳本在 innerHTML 內容開頭的話,那么 IE 瀏覽器將會忽略掉這段腳本,而 Moziila/Firefox 和 Opera 卻不會。

    所以你可以在插入的腳本前加入一段內容:
    <span style="display: none">hack ie</span>
    這樣腳本就不會被忽略了。 當然,如果你不是IE的話,完全沒有必要插入這段代碼。

    PS:這是翻譯的 ^_^,只是一篇介紹,沒有實踐過,有興趣的話,可以試一下  回復  更多評論
      

    主站蜘蛛池模板: 亚洲最新视频在线观看| 久久精品国产亚洲精品| 亚洲av成人一区二区三区| 99在线观看视频免费| 亚洲色大成网站www永久一区| 中文字幕免费在线播放| 国产亚洲一区二区精品| 四虎影视在线影院在线观看免费视频| 亚洲国产精品久久久久婷婷老年 | 国产亚洲人成无码网在线观看| 精品乱子伦一区二区三区高清免费播放 | 亚洲精品国产自在久久 | 国产资源免费观看| 国产av无码专区亚洲av毛片搜 | www视频在线观看免费| 亚洲国产片在线观看| 成年人在线免费观看| 黄页视频在线观看免费| 亚洲乱亚洲乱妇无码麻豆| 午夜爽爽爽男女免费观看影院| 亚洲无成人网77777| 在线免费观看一级片| 一级毛片免费全部播放| 精品日韩亚洲AV无码 | 亚洲中文字幕无码一区二区三区| 99在线观看视频免费| 亚洲heyzo专区无码综合| 国产性爱在线观看亚洲黄色一级片| 国产免费AV片在线观看| 亚洲AV成人噜噜无码网站| 亚洲 综合 国产 欧洲 丝袜| 日本在线看片免费| 亚洲AV一区二区三区四区| 亚洲日本一区二区三区在线| 在线精品一卡乱码免费| 一级毛片高清免费播放| 亚洲国产精品张柏芝在线观看| 免费大黄网站在线观| 免费无码一区二区三区| 国产产在线精品亚洲AAVV| 亚洲男人的天堂在线播放|