2012-05-09 38 views
2

我想要使用此功能加載一個div元素在我的頁面的內容:使得DIV的行爲像IFRAME

function loadmypage(DIV, pageURL) 
{ 
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(DIV).innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET", pageURL ,true); 
xmlhttp.send(); 
} 

然而,當我點擊「框架」本身內的鏈接,該功能不工作。我想這是因爲目標元素與加載的頁面本身不在同一頁。

所以我的問題是:有沒有什麼辦法讓div元素在加載幀本身內的整個頁面時像iframe一樣工作?

PS:出於效率原因,我不允許出於安全原因使用iFrame。 主頁面中的鏈接通常會加載目標,當我點擊這些頁面內的任何鏈接時,問題就會出現。

<div id="nav" class="mmenu"> 
           <ul type="none"> 

              <li><a href= "javascript:loadmypage('viewMessages.php')">Messages</a></li> 
              <li><a href= "javascript:loadmypage('userHomepage.php')">My Conferences</a></li> 
              <li><a href= "javascript:loadmypage('availableConferences.php')">Conferences</a></li> 
              <li><a href= "javascript:loadmypage('incomingRequests.php')">Requests</a></li> 
              <li><a href= #>News</a></li> 
              <li><a href= #>Options</a></li> 


             </ul> 
            </div> 
          </fieldset> 

             <div id="collabsoft" class="collabsoft"> 
+8

PS中的兩個原因都是無稽之談。 – kapa

+0

一旦你把你的div中的responseText它是相同的頁面。 – Jage

+0

顯示您點擊的鏈接以及您用於設置點擊事件的功能 – Jage

回答

3

你的鏈接不工作,因爲你缺少你的div參數。注意你的功能:

function loadmypage(DIV, pageURL) 
{ 
... 

第一個參數是DIV,你只傳遞pageURL。

<li><a href= "javascript:loadmypage('viewMessages.php')">Messages</a></li> 
              <li><a href= "javascript:loadmypage('userHomepage.php')">My Conferences</a></li> 
              <li><a href= "javascript:loadmypage('availableConferences.php')">Conferences</a></li> 
              <li><a href= "javascript:loadmypage('incomingRequests.php')">Requests</a></li> 
0

<div>無法進行表現得像任何設置或切換,如果你想像這樣的事情。畢竟,如果你想,你應該使用。

無論如何,不​​工作的鏈接可能使用相對尋址。這是頁面上內部鏈接的合理期望。爲了讓他們從你的頁面開始工作,你必須使用絕對地址。

所以,如果你在頁面加載

www.example.com/somedirectory/index.php 

,它使用

<link href="style.css" > 

你必須使用

<link href="www.example.com/somedirectory/style.css" > 

所以,你可以遍歷DOM樹,尋找link,a,img和所有其他元素在一些屬性中使用地址,檢查這些屬性,檢查它們是否使用絕對地址(可以用正則表達式完成,但我現在不給你一個,因爲有很多可能性:http://something...,www.something.com/...甚至localhost/...),如果沒有,則絕對引用它們(通過將整個路徑預先放置到下載文檔所在的網頁和目錄)。

您可以通過遞歸函數遍歷DOM樹,首先訪問document.body併爲每個訪問節點調用其所有元素子元素的函數。雖然在你的情況下,你可以利用document.getElementsByTagName來獲得你需要的特定元素的清單。

最後,請注意,由於安全原因,腳本必須包含在同一主機(IP和偶數端口)中。因此,來自其他網站的腳本將無法爲您遠程引用。你也必須在服務器上下載它們。

TLDR:您不需要jQuery,但使用。