2016-05-29 56 views
1

我有這樣一個框架:如何定位框架的框架與onload事件

<frameset rows="120px,100%"> 
<frame name="top" id="top" src="top.php" noresize frameborder="0" scrolling="no" /> 
<frame name="main" id="main" src="main.php" noresize frameborder="0" scrolling="yes" /> 

裏面的main.php文件我有:

<script> 
function reload_top() { 
    top.frames['top'].location.href= "http://www.google.com"; 
} 
</script> 

而且main.php正文的onload事件是:

<body onload="reload_top();"> 

我想實現的是,每當有人加載main.php時,該文件會重新從頂部加載頂部框架top.php,但到目前爲止,我只能讓它突破框架集並加載新的網頁...

我已經試過其中任何一項:

document.getElementById('top').src = "http://www.google.com"; 

window.top.location.href = "http://www.google.com"; 

top.frames['top'].location.href= "http://www.google.com"; 

他們沒有工作。 我在做什麼錯?

謝謝

回答

0

作爲一種信息,HTML5中不再支持幀標籤。你想使用iframe在一個頁面中加載不同的頁面。

當您嘗試訪問幀

例如你不能設置框的位置,是因爲它是不確定的問題代碼

<iframe id="topf" src="stacktop.php"></iframe> 
<script> 
    function reload_top() { 
     var a = document.getElementById('topf'); 
     a.src = "http://www.aapastech.com"; 
    } 
</script> 
+0

我是不贊成使用的區域框架,但我將我的html文檔類型定義爲4.01,因爲我需要它們用於此項目。我試過你的解決方案,但沒有工作 – marcnyc

+0

問題是什麼?我嘗試瞭解決方案。有效。您是否調試過,以查找元素是否可以在您設置的位置訪問src – Aditya

+0

您的示例可能會工作,因爲您使用的是iFrame,但我指定了我正在使用Frameset,並且當我得到該信息時:「Uncaught TypeError:Can not set property'src'null「 – marcnyc

0

Html5的亙古不支持框架集,但使用jQuery和嘗試

<!DOCTYPE html> 
<html> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js">  </script> 
<script> 
$(document).ready(function(){ 

     document.getElementById("top").src="http://yahoo.com"; 
}); 
</script> 
</head> 
<frameset cols="25%,*,25%" id="abc"> 
<frame src="http://www.google.com" id="top" name="top"> 
<frame src="http://www.google.com"> 
<frame src="http://www.google.com"> 
    </frameset> 
</html> 
+0

我是不贊成使用的區域框架,但是我將html doctype定義爲4.01,因爲我需要它們用於此項目。我試過你的解決方案,但沒有工作 – marcnyc

+0

它爲我工作,你的問題是什麼? – Akshath

1

嘗試另一個答案在這裏我們使用onload事件的框架集元素

<html> 
<head> 
<title>Frame: Onload & Onunload Examples</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<script language="JavaScript"> 
<!-- 
    function testOnload() { 
    // alert('OnLoad: Alert in testOnload() executed by onLoad property of frameset tag.'); 
    document.getElementById("top").src="http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_win_frames2"; 
    } 
function testOnUnload() { 
//alert('OnUnload: Alert in testOnUnload() executed by onUnLoad property of frameset tag.') 
    } 
    //--> 
    </script> 
    </head> 
    <frameset rows="80,*" frameborder="0" border="0" framespacing="0" 
    onLoad="javascript:testOnload()" 
    onUnload="javascript:testOnUnload(); alert('onUnload: alert in frameset tag')"> 
<frame name="topFrame" scrolling="NO" noresize src="https://developers.google.com/oauthplayground/" id="top"> 
<frame name="mainFrame" src="https://developers.google.com/oauthplayground/"> 
<noframes> 
    <body bgcolor="#FFFFFF"> 
    <p>Sorry, this page needs a browser that supports frames.</p> 
    </body> 
</noframes> 
</frameset> 
</html> 
0

經過一些挖我發現從另一個框架的目標幀的方式是使用:

parent.document.getElementById('frameName').src 

所以我的函數現在看起來像這樣:

<script> 
    function reload_top() { 
     parent.document.getElementById('top').src = "venues.php"; 
    } 
</script> 

感謝試圖幫助球員。