<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 閱讀(71744) 評論(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:這是翻譯的 ^_^,只是一篇介紹,沒有實踐過,有興趣的話,可以試一下  回復  更多評論
      

    主站蜘蛛池模板: 久久久久久成人毛片免费看| 国产精品午夜免费观看网站| 鲁大师在线影院免费观看| 亚洲国产精品一区二区成人片国内| 一级一级一级毛片免费毛片| jlzzjlzz亚洲乱熟在线播放| 一级毛片在线免费播放| 久久乐国产精品亚洲综合| 9久热这里只有精品免费| 国产亚洲精品资在线| 人人揉揉香蕉大免费不卡| 亚洲一区二区在线免费观看| 8888四色奇米在线观看免费看| 亚洲高清视频免费| av免费不卡国产观看| 亚洲精品宾馆在线精品酒店| 青青青国产免费一夜七次郎| 黄网站色成年片大免费高清| 国产亚洲精品xxx| 国产1000部成人免费视频| 亚洲中文无码永久免| 一级毛片直播亚洲| 久久久久久成人毛片免费看| 亚洲av专区无码观看精品天堂| 免费激情视频网站| 精品一区二区三区免费视频| 亚洲精品综合久久中文字幕| 在线a毛片免费视频观看| a级毛片免费高清视频| 2022年亚洲午夜一区二区福利 | 亚洲AV无码国产丝袜在线观看| 久久国产精品成人片免费| 亚洲无吗在线视频| 亚洲午夜成人精品电影在线观看| 免费在线看黄的网站| 亚洲色大成网站www尤物| 久久久久亚洲AV成人网人人软件 | 最近最好的中文字幕2019免费| kk4kk免费视频毛片| 7777久久亚洲中文字幕蜜桃 | 毛片亚洲AV无码精品国产午夜|