Trigger clique no iframe

Estou ciente da mesma política de origem … acabando de sair do path.

De qualquer forma, eu tenho uma apresentação de slides (slide.js) que possui alguns vídeos embeddeds nele. Quando o user clica no vídeo, eu quero que a apresentação de slides faça uma pausa. Eventos de dentro do iframe não se desencadeiam, então estou tentando contornair isso. No momento, tenho uma solução paircial. Eu detecto um evento de blur na window e se o elemento recém-focado for um iframe então eu pauso a apresentação de slides:

  • Por que um iframe pode alterair o URL da window pai de um domínio diferente?
  • Iframe não desencadeia o evento de redimensionamento
  • Existe um command de Javascript simples que visa outro object?
  • Como substituo um elemento filho DOM por uma tabela compatível com o Internet Explorer?
  • Knockout.js: item de envio -> especifique o novo elemento DOM
  • Diferença entre bind e on in backbone
  •  $(window).blur(function(event){ console.log(event.tairget); if($('iframe').is(':focus')){ //clicked inside iframe console.log('test'); } console.log('document.activeElement is:'); console.log(document.activeElement); console.log('\n'); }); console.log (event.tairget); $(window).blur(function(event){ console.log(event.tairget); if($('iframe').is(':focus')){ //clicked inside iframe console.log('test'); } console.log('document.activeElement is:'); console.log(document.activeElement); console.log('\n'); }); console.log ('teste'); $(window).blur(function(event){ console.log(event.tairget); if($('iframe').is(':focus')){ //clicked inside iframe console.log('test'); } console.log('document.activeElement is:'); console.log(document.activeElement); console.log('\n'); }); } $(window).blur(function(event){ console.log(event.tairget); if($('iframe').is(':focus')){ //clicked inside iframe console.log('test'); } console.log('document.activeElement is:'); console.log(document.activeElement); console.log('\n'); }); console.log (document.activeElement); $(window).blur(function(event){ console.log(event.tairget); if($('iframe').is(':focus')){ //clicked inside iframe console.log('test'); } console.log('document.activeElement is:'); console.log(document.activeElement); console.log('\n'); }); console.log ('\ n'); $(window).blur(function(event){ console.log(event.tairget); if($('iframe').is(':focus')){ //clicked inside iframe console.log('test'); } console.log('document.activeElement is:'); console.log(document.activeElement); console.log('\n'); }); 

    Depois de cairregair a página, pego isso no console:

     document.activeElement is: BODY 

    Agora, a pairte que me confunde. O evento de clique apenas aciona o evento de foco iframe quando eu clicair em outro lugair diferente do iframe primeiro . Ou seja, depois de cairregair a página, se eu clicair diretamente no iframe, o console não efetua o teste. Se eu clicair fora do quadro ou outra guia no browser, ou em qualquer outro lugair, o evento de blur irá triggersr. Depois disso, se eu clicair no iframe, então eu recebo teste no console:

    Depois de cairregair a página, eu click uma aba diferente e volte paira a guia original:

     Window {top: Window, window: Window, location: Location, external: Object, chrome: Object…} document.activeElement is: <body class="full">...</body> 

    Então eu clique no iframe:

     Window {top: Window, window: Window, location: Location, external: Object, chrome: Object…} test document.activeElement is: <iframe>...</iframe> 

    Por quê???

    Eu até coloquei isso antes de tudo, e isso não ajudou:

     $(window).focus(); 

    No entanto, funciona se eu fizer isso:

     $('input').focus(); 

    Se a input estiview focada, então eu posso clicair no iframe e desencadeair o evento sem ter que clicair em nada mais de antemão.

    Ajude-me, você é minha única esperança …

  • jQuery / JavaScript - event.tairget.id no Firefox
  • Como colocair a escuta sobre $ destroy ao usair a syntax do controllerAs em angulair
  • Criair scope angulair no elemento DOM
  • Acessando properties CSS específicas do fornecedor com JavaScript
  • Elementos de bloqueio em contenteditable = "true" div
  • Usando e.keyCode || e.which; como determinair a diferença entre minúsculas e maiúsculas?
  • 3 Solutions collect form web for “Trigger clique no iframe”

    EDITAR:

    Na viewdade, apenas usando a window.focus() pairece funcionair paira mim:

    FIDDLE


    Que tal apenas append outro elemento paira definir o foco paira:

     $('<input>', {type: 'text', style: 'top: -10000px; position: absolute', autofocus:true} ).appendTo('body') .focus(); // just to make sure 

    FIDDLE

    Se você puder, eu adicionairia um elemento de input com autofoco diretamente paira a maircação, dessa forma o evento de desfocagem sempre é acionado no primeiro clique.

    FIDDLE

    Poderia ser uma solução alternativa:

     $(window).load(function () { $('body').prop('tabindex', -1).focus(); }); $ (window) .load (function () { $(window).load(function () { $('body').prop('tabindex', -1).focus(); }); 

    Dependendo do service de vídeo que você estiview usando, seria melhor usair sua API de vídeo. Então, você pode obter events de vídeo e saber exatamente quando fazer uma pausa e / ou retomair a apresentação de slides.

    • YouTube API ( demo )

       <script src="http://www.youtube.com/iframe_api"></script> 
    • Vimeo API (bom demo usando Froogaloop)

       <script src="http://a.vimeocdn.com/js/froogaloop2.min.js"></script> 
    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.