ajax+div 代替iframe 學習嘗試


工作的時候遇到了所謂html內多tab展示的情況,主要是通過iframe來關聯子頁面;

不過也不知道從何時開始記得是說iframe不建議多用,所以想想,還是找找有沒有其他方法(不應用於工作);

先說下關於用iframe的感覺吧,第一次嘗試實際應用,iframe都有至少一個form在里面,而且主頁面是為了做關於一個tab提交form之后提示並切換到下一個tab,主頁面負責加載了tab的源地址即xxx.jsp ,那么當時的做法時,iframe提交后javascript調用父頁面的js方法實現tab切換,好在工作上用的是ie(為什么我反倒覺得惡心),通過如下:

//iframe里js
function pageNext(param){
  window.parent.pageNext(param);  
}
//父頁面里的js
function pageNext(){
  alert("孩子,你居然召喚了父親大人我的魔力了//魔王奶爸看多了");
  //自行實現    
}

不過這樣的父子頁面調用,貌似在webkit下似乎報錯了,難道因為這樣所以才說盡量別用。

好了,說回正題,當時我就咨詢了下其他人,有沒有不用iframe的做法,剛好他們也在研究,查看了一下網上資料。

通過在主頁面設置div,觸發tab頁面的內容放置於div中,實際代碼如下:

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Home</title>
<script type="text/javascript" src="js/functionOfTab.js">
//既然ajax的方式加載的js無法調用,那么可以通過使用主頁面嵌入js,這樣的話可能要考慮js與view的分離,其實也是不錯的
</script> <script type="text/javascript"> function loadDiv(){ //隱藏了加載的文件地址 var xmlhttp; if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); }else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function(){ if (xmlhttp.readyState==4 && xmlhttp.status==200){ document.getElementById("myDiv").innerHTML=xmlhttp.responseText; } }; xmlhttp.open("GET","./ajax.do",true); xmlhttp.send(); } function loadDiv1(){ //直接加載文件,但這樣就暴露了加載的url var xmlhttp; if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); }else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function(){ if (xmlhttp.readyState==4 && xmlhttp.status==200){ document.getElementById("myDiv").innerHTML=xmlhttp.responseText; } }; xmlhttp.open("GET","./tab.html",true); xmlhttp.send(); } </script> </head> <body> <form name="testForm" action="./f.do"> <input type="submit" value="跳轉"/> </form> <div><input type="button" value="load" onclick="loadDiv();" /> <input type="button" value="load file" onclick="loadDiv1();" /></div> <div id="myDiv"></div> </body> </html>

tab.jsp

<script type="text/javascript">
    function test(){//后加載是無法調用到的
        alert("whatt?");
    }
</script>

<input type="button"  value="dede"  onclick="test();" />

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM