javascript如何操作iframe簡單介紹
iframe現在依然有著大量的引用,非常的變數,有時候我們需要再父視窗或者子視窗進行相互的元素操作,不過和在同一視窗中的相互操作有所區別,下面就簡單介紹一下它們是如何相互訪問和操作其中的元素的。
一.同域之間的訪問:
下面是父視窗和子視窗中的靜態程式碼結構:
[HTML] 純文字檢視 複製程式碼<body> <div>螞蟻部落</div> <iframe src="lianxi.html" id="theframe" name="theframe"></iframe> </body>
以上是父視窗中的靜態程式碼結構。
[HTML] 純文字檢視 複製程式碼<body> <div> <ul> <li>螞蟻部落</li> <li>只有奮鬥才有未來</li> <li>太陽出來</li> </ul> </div> </body>
以上程式碼是子視窗中的靜態結構。
1.父視窗訪問子視窗中的內容:
由於IE8以下瀏覽器不支援contentDocument屬性,所以可以使用以下全相容的方式:
[JavaScript] 純文字檢視 複製程式碼window.frames["frameName"].document;//使用ifame的name屬性值。 window.frames["frameIndex"].document;//使用當前iframe的索引值。
看一段例項程式碼:
[JavaScript] 純文字檢視 複製程式碼window.onload=function(){ var childrend=window.frames["theframe"].document; var len=childrend.getElementsByTagName("li").length; alert(len); }
以上程式碼可以彈出子視窗中li元素的數量。
特別說明:請務必將程式碼包裹在window.onlaod=function(){}中。
2.子視窗訪問父視窗的內容:
[JavaScript] 純文字檢視 複製程式碼window.onload=function(){ var len; parent.document.getElementsByTagName("div"); len=parent.document.getElementsByTagName("div").length; alert(len); }
以上程式碼可以彈出父視窗div元素的數量。
如果是跨子域訪問需要分別在子頁面和父頁面中加上以下程式碼:
[JavaScript] 純文字檢視 複製程式碼document.domain = "test.softwhy.com"
二.跨域操作iframe:
當兩個處於不同域名之下的網頁進行資料呼叫的話,需要通過js改變location物件的hash屬性值來實現。
父頁面:
[HTML] 純文字檢視 複製程式碼<iframe id="test-iframe" src="http://www.yyy.com/child.html"></iframe> <input type="button" value="send" /> <script type="text/javascript"> function sendRequest() { document.getElementById('test-iframe').src += '#a'; } var interval = window.setInterval(function(){ if(location.hash) { alert(location.hash); window.clearInterval(interval); } },1000); </script>
子頁面:
[HTML] 純文字檢視 複製程式碼<script type="text/javascript"> var url = 'http://www.xxx.com/father.html'; oldHash = self.location.hash, newHash, interval = window.setInterval(function(){ newHash = self.location.hash; if(oldHash != self.location.hash) { document.getElementsByTagName('h1')[0].innerHTML = 'pp'; //alert(parent.location.href); //去掉這個註釋,瀏覽器會提示無許可權 parent.location.href = url + '#b'; window.clearInterval(interval); } },500); </script>
總結:
1.除IE6, IE7外只要改變hash 就會記錄在瀏覽器history中。
2.子頁面無權讀取父頁面的url, 但可以對父頁面的url進行寫操作,所以跨域操作時,要提前得知父頁面的url。
相關文章
- JavaScript 簡單介紹JavaScript
- 簡單介紹克隆 JavaScriptJavaScript
- 簡單介紹JavaScript閉包JavaScript
- JavaScript return語句簡單介紹JavaScript
- JavaScript希爾排序簡單介紹JavaScript排序
- 簡單介紹下各種 JavaScript 解析器JavaScript
- 關於python操作excel,xlwt,xlwd,最簡單的操作介紹PythonExcel
- 【Javascript】——簡單cookie操作JavaScriptCookie
- Map簡單介紹
- SVG簡單介紹SVG
- Clickjacking簡單介紹
- 【Pandas】簡單介紹
- ActiveMQ簡單介紹MQ
- JSON簡單介紹JSON
- RPC簡單介紹RPC
- Python簡單介紹Python
- KVM簡單介紹
- RMI簡單介紹
- HTML簡單介紹HTML
- HTML 簡單介紹HTML
- CSS 簡單介紹CSS
- ajax簡單介紹
- 簡單介紹CentOS6升級glibc操作步驟CentOS
- MATLAB神經網路工具箱(簡單操作介紹)Matlab神經網路
- AOP的簡單介紹
- 禪道簡單介紹
- Apache Curator簡單介紹Apache
- spark簡單介紹(一)Spark
- Flutter key簡單介紹Flutter
- Ansible(1)- 簡單介紹
- Webpack 的簡單介紹Web
- Git_簡單介紹Git
- jQuery Validate簡單介紹jQuery
- JSON物件簡單介紹JSON物件
- <svg>元素簡單介紹SVG
- 簡單介紹 ldd 命令
- Flownet 介紹 及光流的簡單介紹
- form表單的簡單介紹ORM
- 簡單介紹Python 如何擷取字元函式Python字元函式