隐藏包含iframe的div

时间:2014-02-21 10:11:09

标签: javascript jquery iframe

我有一个包含iframe的div,这个iframe会加载一个显示页面的网址。

在iframe中,我有一个关闭按钮,当点击时,隐藏div。但是我无法从iframe中访问div。

我的代码如下

<div class="app" id="modalOverlay" style="background-color:rgba(0,0,0,0.5);position:absolute;z-index:1;width:100%;height:100%;top: 0;left: 0;">
  <div id="modalContainer" style="position:absolute;z-index:2;margin: -250px 0 0 -250px;top: 50%;left: 50%;background-color: #222;width: 500px;height: 500px;">
    <a class="close" style="position:relative;top:-10px;z-index:3">Close</a>
    <iframe src="http://www.local.dev/api/v1/track" frameborder="0" style="width:500px;height:500px;position:relative;top:-20px">
    </iframe>
  </div>
</div>

在iframe src视图中,我加载了一个使用jquery

的js
$(document).on('click','.close',function(){
    $(document).closest('.app').remove();
});

无论如何要做到这一点?

4 个答案:

答案 0 :(得分:0)

尝试这样的事情:

$('#divtohide', window.parent.document).hide();

或类似的东西:

$("#InFrameId").on('click', function() {
    $('#divtohide', window.parent.document).hide();
});

编辑:根据您问题的最新更新,如果该框架来自其他域,则浏览器会将此标记为XSS,您可能无法做多。运行脚本的一种方法是iframe的服务器配置为发送具有正确值的X-XSS-Protection标头。

答案 1 :(得分:0)

你可以使用:

$('#modalContainer', window.parent.document);

第二个参数是要搜索的上下文。

$(document).on('click','.close',function(){
  $('.app', window.parent.document).remove();
});

答案 2 :(得分:0)

这可以通过子到父框架消息传递来完成。

让父框架监听消息。

<div id="myDiv">
    <iframe src="childFrame.html" id="frame1"></iframe>
</div>

<script>    
window.onmessage = function(e) {
     if(e.data == "close") $("#myDiv").toggle();
}
</script>

子框架可以向父框架发送消息。

<button onclick="parent.postMessage('close', '*');">Hide</button>

请参阅我的要点:https://gist.github.com/sfarthin/9140403

DhruvJoshi的方法会让浏览器将此标记为XSS攻击。

答案 3 :(得分:-1)

根据您的代码,根据您的代码,我认为您的iframe来自不同的域,因此来自不同域的框架无法访问父页面。

因此,您可以考虑使用nodejs,或者您应该阅读:Cross domain iframe issue或使用“crossdomain iframe”搜索关键字可以引导您获得所需内容。

相关问题