国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

js操作iframe兼容各種主流瀏覽器示例代碼

2024-05-06 15:49:25
字體:
來源:轉載
供稿:網友
遇到了操作iframe的相關問題,其實就是在操作iframe內部某個窗體時,調用父窗體的一個函數,下面與大家分享下操作iframe兼容各種瀏覽器的方法

在做項目時,遇到了操作iframe的相關問題。業務很簡單,其實就是在操作iframe內部某個窗體時,調用父窗體的一個函數。于是就寫了兩個很簡單的htm頁面用來測試,使用網上流行的方法在谷歌瀏覽器中始終報錯,不能通過。
父頁面parent.html的代碼如下

復制代碼 代碼如下:


<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
</title>
<script src="jquery-1.10.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
function ParentFunction() {
alert('ParentFunction');
}
</script></head>
<body>
<input type="button" value="測試" />
<iframe frameborder="0" src='child.html' ></iframe>
</body>
</html>


子頁面child.html的代碼如下

復制代碼 代碼如下:


<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
</title>
<script src="jquery-1.10.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#btnTest").click(function (e) {
var t=window.parent;
t.ParentFunction();
});
})
</script></head>
<body>
<input type="button" value="應該獲取的值" />rrr
</body>
</html>


網絡上流行的方法 var t=window.parent; t.ParentFunction();在IE中能調用,可是在谷歌瀏覽器中總是提示如下錯誤,
Blocked a frame with origin "null" from accessing a frame with origin "null". Protocols, domains, and ports must match.
網上找了很長時間都沒法發現方法,有的也是很早以前的版本,基本上沒用了,而且人云亦云,基本上沒有測試過。于是自己摸索,后來才發現,谷歌瀏覽器其實那種方法其實也可以,只是很奇怪,必須發布后才可以,在文件系統中調用,就會出現上邊的錯誤。
其實還有一種html5的方法postMessage,于是就根據著進行了改寫,最終代碼如下:
父頁面parent.html的代碼如下

復制代碼 代碼如下:


<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
</title>
<script src="jquery-1.10.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
this.ParentFunction= function() {//和注釋掉的方法是一樣的,也就是說加不加this都是一樣的,因為此處的this就是windows
alert('ParentFunction');
}
// function ParentFunction() {
// alert('ParentFunction');
// }
function receiveMessage(e) {
var data = e.data;
if(data=="ParentFunction")
{
ParentFunction() ;
}
}
if (typeof window.addEventListener != 'undefined') {//使用html5 的postMessage必須處理的
window.addEventListener('message', receiveMessage, false);
} else if (typeof window.attachEvent != 'undefined') {
window.attachEvent('onmessage', receiveMessage);
}
</script></head>
<body>
<input type="button" value="測試" />
<iframe frameborder="0" src='child.html' ></iframe>
</body>
</html>


子頁面child.html的代碼如下

復制代碼 代碼如下:


<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
</title>
<script src="jquery-1.10.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#btnTest").click(function (e) {
var t=window.parent;
if(!t.ParentFunction)//在不支持時,使用html5 的postMessage方法
{
t.postMessage("ParentFunction", '*');
}
else
{
t.ParentFunction();
}
});
})
</script></head>
<body>
<input type="button" value="應該獲取的值" />rrr
</body>
</html>


經過改寫后,在文件系統中雖然也會出現那個錯誤,但需要調用的方法確實調用了,目的確實達到了,不影響使用了。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 丰顺县| 游戏| 南充市| 南投县| 东海县| 邻水| 进贤县| 周宁县| 宜川县| 彭山县| 临朐县| 宁蒗| 紫阳县| 朝阳区| 池州市| 青浦区| 平南县| 麦盖提县| 大同市| 托里县| 福泉市| 平远县| 房山区| 浙江省| 金寨县| 剑川县| 南通市| 宜昌市| 百色市| 翁源县| 清水县| 南开区| 米泉市| 上思县| 琼结县| 金门县| 手机| 长治县| 泰顺县| 镇康县| 普宁市|