JavaScript: top對象


一般的JS書里都會在講框架集的時候講top,這會讓人誤解,認為top對象只是代表框架集,其實top的含義應該是說瀏覽器直接包含的那一個頁面對象,也就是說如果你有一個頁面被其他頁面以iframe的方式包含了,無論包含的層級是什么,都可以用top訪問最外層的哪一個頁面,因為這個頁面被瀏覽器直接包含,這個事情的意義在於如果多個頁面被同時加載,他們之間需要通信,就完全可以在最外層的頁面設置一個通信對象,其他頁面都通過這個對象進行通信(需要說明的是,如果要這么干,需要將他們部署在服務器上進行測試,僅僅在文件系統上測試,可能因為跨域而測試失敗)

測試:

chorme瀏覽器,apache2服務器,原生js, index.html包含a.html; a.html包含b.html, b.html包含c.html; c.html通過top對象訪問index.html定義的函數以及頁面元素

index.html

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>iframe</title>
</head>
<body>
index.html
<div id="panel"></div>
<iframe src="a.html"></iframe>
<script language="javascript">
function showMessage()
{
    alert("hello")
}

o = new Object();
o.showMessage = showMessage;
</script>
</body>
</html>

c.html

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>iframe</title>
</head>
<body>
c.html
<input type="button" value="click me" onclick="show()" ></input>
<script language="javascript">
function show()
{
    window.top.o.showMessage();
}

</script>
</body>
</html>

top對象是window對象的子對象,如果要訪問頁面元素,可以這樣寫:

function show()
{
    o = window.top.document.getElementById("panel");
    o.innerHTML = "hello";
}

 


免責聲明!

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



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