html中iframe标签的问题

 我来答
dksnear
推荐于2016-07-10 · TA获得超过1211个赞
知道小有建树答主
回答量:399
采纳率:0%
帮助的人:622万
展开全部

index.html 和 iframe.html  必须同域且使用http协议

整个页面 index.html

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>

.stage{

margin:auto 50px;
}

.dropDownPanel{

position:fixed;
width:200px;
height:200px;
background-color:green;
}

iframe{

display:block;
width:100%;
height:200px;
border:1px solid;
margin-top:20px;

}

</style>
<script>

window.$showDropDown = function(top,left){

var dropDownPanel = window.$dropDownPanel;

if(!dropDownPanel){

dropDownPanel = document.createElement('div');
document.body.appendChild(dropDownPanel);

dropDownPanel.className = 'dropDownPanel';

dropDownPanel.addEventListener('click',function(e){

e.stopPropagation();
});

document.addEventListener('click',function(){

window.$hideDropDown();
});
}

dropDownPanel.style.top = top + 'px';
dropDownPanel.style.left = left + 'px';
dropDownPanel.style.display = 'block';

window.$dropDownPanel = window.$dropDownPanel || dropDownPanel;

};

window.$hideDropDown = function(){

window.$dropDownPanel && (window.$dropDownPanel.style.display = 'none');
};

window.$getOffset = function(el){

var offset = { top:el.offsetTop,left:el.offsetLeft,height:el.offsetHeight,width:el.offsetWidth };
var parent = el.offsetParent;

while(parent){

offset.top += parent.offsetTop;
offset.left += parent.offsetLeft;
parent = parent.offsetParent;
}

return offset;

};

window.$bindDropDownHandler = function(iframe){

iframe.contentWindow.$iframeOffset = window.$getOffset(iframe);
iframe.contentWindow.document.addEventListener('click',function(){

window.$hideDropDown();
});
};

</script>
</head>
<body>
<div class="stage">
<iframe src="iframe.html" frameborder="0" onload="window.$bindDropDownHandler(this)"></iframe>
<iframe src="iframe.html" frameborder="0" onload="window.$bindDropDownHandler(this)"></iframe>
</div>
</body>
</html>

iframe页面 iframe.html

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>

html{

width:100%;
height:200px;
background-color:gray;
}

button{

position:fixed;
bottom:20px;
left:50px;
}

</style>
<script>

window.addEventListener('load',function(){

document.getElementsByTagName('button')[0].addEventListener('click',function(e){

e.stopPropagation();
var offset = window.top.$getOffset(this);
window.top.$showDropDown(
offset.height + offset.top + window.$iframeOffset.top,
offset.left + window.$iframeOffset.left
);

});

});
</script>
</head>
<body>
<button>showdropdown</button>
</body>
</html>
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式