本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告
暂无公告...

我的分类(专题)

日志更新

最新评论

留言板

链接


Blog信息
blog名称:
日志总数:10
评论数量:25
留言数量:0
访问次数:89390
建立时间:2005年3月7日




[xml]XMLHttp 方式实现无刷屏,在IE,FireFox 上测试通过
文章收藏

guan1200 发表于 2005/6/2 11:07:42

XMLHttp 方式实现无刷屏,在IE,FireFox 上测试通过 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"   "http://www.w3.org/tr/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><style>html {background-color:#eeeeee}body {      background-color:#ccffcc;      font-family:Tahoma,Arial,Helvetica,sans-serif;      font-size:12px;   margin-left:15%;    margin-right:15%;   border:3px groove #006600;    padding:15px  }h1   {      text-align:left;      font-size:1.5em;      font-weight:bold     }</style><script type="text/javascript">// global flagvar isIE = false; // global request and XML document objectsvar req; // retrieve XML document (reusable generic function);// parameter is URL string (relative or complete) to// an .xml file whose Content-Type is a valid XML// type, such as text/xml; XML source must be from// same domain as HTML filefunction loadXMLDoc(url) {    // branch for native XMLHttpRequest object    if (window.XMLHttpRequest) {        req = new XMLHttpRequest();        req.onreadystatechange = processReqChange;        req.open("GET", url, true);        req.send(null);    // branch for IE/Windows ActiveX version    } else if (window.ActiveXObject) {        isIE = true;        req = new ActiveXObject("Microsoft.XMLHTTP");        if (req) {            req.onreadystatechange = processReqChange;            req.open("GET", url, true);            req.send();        }    }} // handle onreadystatechange event of req objectfunction processReqChange() {    // only if req shows "loaded"    if (req.readyState == 4) {        // only if "OK"        if (req.status == 200) {            clearTopicList();            buildTopicList();         } else {            alert("There was a problem retrieving the XML data:\n" +                req.statusText);         }    }} // invoked by "Category" select element change;// loads chosen XML document, clears Topics select// element, loads new items into Topics select elementfunction loadDoc(evt) {    // equalize W3C/IE event models to get event object    evt = (evt) ? evt : ((window.event) ? window.event : null);    if (evt) {        // equalize W3C/IE models to get event target reference        var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);        if (elem) {            try {                if (elem.selectedIndex > 0) {                    loadXMLDoc(elem.options[elem.selectedIndex].value);                }             }            catch(e) {                var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");                alert("Unable to get XML data:\n" + msg);                return;            }        }    }} // retrieve text of an XML document element, including// elements using namespacesfunction getElementTextNS(prefix, local, parentElem, index) {    var result = "";    if (prefix && isIE) {        // IE/Windows way of handling namespaces        result = parentElem.getElementsByTagName(prefix + ":" + local)[index];    } else {        // the namespace versions of this method         // (getElementsByTagNameNS()) operate        // differently in Safari and Mozilla, but both        // return value with just local name, provided         // there aren't conflicts with non-namespace element        // names        result = parentElem.getElementsByTagName(local)[index];    }    if (result) {        // get text, accounting for possible        // whitespace (carriage return) text nodes         if (result.childNodes.length > 1) {            return result.childNodes[1].nodeValue;        } else {            return result.firstChild.nodeValue;              }    } else {        return "n/a";    }} // empty Topics select list contentfunction clearTopicList() {    var select = document.getElementById("topics");    while (select.length > 0) {        select.remove(0);    }} // add item to select element the less// elegant, but compatible way.function appendToSelect(select, value, content) {    var opt;    opt = document.createElement("option");    opt.value = value;    opt.appendChild(content);    select.appendChild(opt);} // fill Topics select list with items from// the current XML documentfunction buildTopicList() {    var select = document.getElementById("topics");    var items = req.responseXML.getElementsByTagName("item");    // loop through <item> elements, and add each nested    // <title> element to Topics select element    for (var i = 0; i < items.length; i++) {        appendToSelect(select, i,            document.createTextNode(getElementTextNS("", "title", items[i], 0)));    }    // clear detail display    document.getElementById("details").innerHTML = "";} // display details retrieved from XML documentfunction showDetail(evt) {    evt = (evt) ? evt : ((window.event) ? window.event : null);    var item, content, div;    if (evt) {        var select = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);        if (select && select.options.length > 1) {            // copy <content:encoded> element text for            // the selected item            item = req.responseXML.getElementsByTagName("item")[select.value];            content = getElementTextNS("content", "encoded", item, 0);            div = document.getElementById("details");            div.innerHTML = "";            // blast new HTML content into "details" <div>            div.innerHTML = content;        }    }}</script></head><body><h1>XMLHttpRequest Object Demo</h1><hr /> <form><p>Category:<br /><select onchange="loadDoc(event)">    <option value="">Choose One</option>    <option value="songs.xml">Top 10 Songs</option>    <option value="albums.xml">Top 10 Albums</option>    <option value="newreleases.xml">Top 10 New Releases</option>    <option value="justadded.xml">Top 10 Just Added</option></select></p><p>Items:<br /><select size="10" id="topics" onchange="showDetail(event)">    <option value="">Choose a Category First</option></select></p></form><div id="details"><span></span></div></body><html>


阅读全文(2940) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144774467 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号