2015-04-17 5 views
0

Я хотел был бы закрыть iframe и div, всякий раз, когда кто-либо щелкает любую ссылку в iframe.JQuery или Javascript или Ajax: Закрыть iframe, нажав на него

Я знаю, что это возможно, я видел, как некоторые сайты делают это. Просто не помните URL-адрес таких сайтов.

Я скопировал этот код на сайте некоторое время назад и был использован, чтобы найти щелчок внутри iframe.

Не знаю, как использовать скрипт.

$.enableFrameClick = function(){ 
var decoy = $('<a href="#"/>').css({ 
    position: 'absolute', 
    right:0, 
    top:0, 
    width:1, 
    opacity:0 
}).click(function(e){ return false }).appendTo(document.body); 

$(window).blur(function(){ 
    if ($.inFrame){ 
     $('#'+$.inFrame).trigger('click'); 
     setTimeout(function(){ 
      decoy.focus(); 
     }, 10); 
    } 
}); 

var ids = +(new Date); 
$('iframe').each(function(){ 
    if (!this.id){ 
     this.id = ++ids; 
    } 
    $(this).hover(function(){ 
     $.inFrame = this.id; 
    }, function(){ 
     $.inFrame = null; 
    }) 
}); 
}; 

$('#mha iframe').bind('click', function(){ 
    $.ifrm(1); 
    //log(['[',++i,']','clicked', this.id].join(' ')); 
}); 

function log(m){ 
    //$('#log').text(m); 
    //console.log(m); 
} 

var i = 0; 

$.ifrm = function(r){ 
    $.get("http://www.example.com/"+r, function(html,status){ 
     $('#mha iframe').attr("src",html); 
     if(r == 1) 
      html = ''; 
     if(html == '') 
      $('#fanback').remove(); 
    }); 
}; 

$.enableFrameClick(); 
$.ifrm(0); 
+0

Закрыть iframe? Вы имеете в виду скрытие/удаление из 'DOM'? – lshettyl

+0

Извините! В div, в котором находится iframe. LShetty – Murilo

+0

Вам запрещено получать доступ к содержимому iframe, если оно не находится на вашем сервере. (или установлены соответствующие заголовки access-control- *) –

ответ

0

Вы можете попробовать использовать ниже, если то, что вы хотите просто сделать DIV «исчезнуть»:

$("#button_id").click(function(){ 
    $("#div_id").hide(); 
}); 
0

Вы Cant вызвать событие (например, мышь) внутри плавающего фрейма, но существуют некоторые способ сделать это в любом случае, как это:

http://jsbin.com/aYijiLe/2

я надеюсь, что может помочь вам (я думаю, что работа также crossdomain, но им не уверен, что)

+0

Я обновил вопрос с помощью скрипта. Не могли бы вы рассказать мне, как это работает? @Aethiss – Murilo

0

Узел iframe имеет свойство contentWindow, которое является «оконным» объектом iframe.

var iframe = document.getElementById('the_iframe'); 
    iframe.contentWindow.document.body.addEventListener('click', function(event { 
      //check if target is an anchor tag 
      if (e.target.tagName === 'A') { 
        //remove iframe 
        iframe.parent.removeChild(iframe); 
      } 
    }); 

Обратите внимание, что вы можете только прикрепить события к узлам внутри фрейма, только если источник IFrame находится на том же домене, порт и протокол.

См. http://jsfiddle.net/6crygjm3/1/ для рабочей демонстрации.

Смежные вопросы