
常用软件类: |
|杀毒安全 | |联络聊天 | |网络软件 | |多媒体类 | |系统工具 | |图形图像 | |系统工具 | |应用软件 | |行业软件 |
开发设计类: |
|动画制作 | |图像处理 | |3D设计 | |操作系统 | |站长学院 | |网络相关 | |WEB设计 | |数据库类 | |程序开发 |
三、 嵌入式框架
如果你关心浏览器兼容性的话,你应该使用嵌入式框架。一些老式的浏览器支持IFRAME元素,但不支持XmlHttpRequest对象。当然,使用这种方式还有如下一些理由:
· 被加载到一个IFRAME中的内容在装载的过程中被显示于浏览器中,这向终端用户显示一个可视化进程。
· 页面缓冲总是使用加载到一个IFRAME中的内容工作。一些版本的Opera还不能较好地使用XmlHttpRequest对象处理经缓冲的响应。
为此,我们可以把一个空IFRAME插入到每一个DIV容器中,并且在每一个IFRAME后添加一个简短的JavaScript语句,如下所示:
| <div id="header"> <div style="height: 100px; width: 100%"></div> <iframe id="header_iframe" style="height: 0px;"></iframe> <script>loadIframe("header","/navigation/header.html")</script> </div> |
| function loadIframe(id,url) { try { var iframeObj = document.getElementById(id+"_iframe"); iframeObj.src = url ; } catch (err) { alert("cannot load "+url+" into "+id) ; } } |
| <body onload="contentLoaded('header')" style="margin: 0px 0px; padding: 0px 0px"> |
| function contentLoaded(parentID) { var myContent = document.body.innerHTML ; parent.copyContent(parentID,myContent); } |
| function copyContent(id,content) { try { var placeholder = document.getElementById(id) ; placeholder.innerHTML = content; } catch (err) { alert("Cannot copy HTML content into "+id); } } |
| <div id="header"> <div style="height: 100px; width: 100%"></div> <script>loadContent("header","/navigation/header.html")</script> </div> |
| function loadContent(id,url) { try { var rq = new XMLHttpRequest() ; rq.open("GET", url, true); rq.onreadystatechange = function() { contentLoaded(rq,url,id) } rq.send(null); } catch (err) { alert("cannot load "+url+" into "+id) ; } } |
| function contentLoaded(rq,url,id) { try { if (rq.readyState != 4) { return; } if (rq.status != 200) { alert("failed to load "+url); return; } var txt = rq.responseText ; //查找<body>标记的开始位置 var startBodyTag = txt.indexOf("<body") //查找<body>标记的结束,跳过任何属性 var endOfStartTag = txt.indexOf(">",startBodyTag+1) //查找</body>标记 var endBodyTag = txt.indexOf("</body") if (endBodyTag == -1) { endBodyTag = txt.length ; } //提取实际内容 var bodyContent = txt.substring(endOfStartTag+1,endBodyTag) if (bodyContent) { var placeholder = document.getElementById(id) ; placeholder.innerHTML = bodyContent; } } catch (err) { alert("cannot load "+url+" into "+id) ; } } |