Eu tenho dois iframes em uma página e um faz alterações na outra, mas o outro iframe não mostra a alteração até que eu atualize. Existe uma maneira fácil de atualizar esse iframe com o jQuery?
<div class="project">
<iframe id="currentElement" class="myframe" name="myframe" src="http://somesite.com/something/new"></iframe>
</div>
javascript
jquery
html
iframe
Matt Elhotiby
fonte
fonte
Respostas:
Se o iframe não estivesse em um domínio diferente, você poderia fazer algo assim:
Mas como o iframe está em um domínio diferente, você terá acesso negado à
contentDocument
propriedade do iframe pela política de mesma origem .Mas você pode forçar hackishly o iframe entre domínios a recarregar se seu código estiver sendo executado na página pai do iframe, definindo seu atributo src para si mesmo. Como isso:
Se você está tentando recarregar o iframe de outro iframe, está sem sorte, isso não é possível.
fonte
document.getElementById(FrameID).contentWindow.location.reload(true);
iframe.contentDocument.location=iframe.src;
em vez que trabalhou grande$('#map_iframe').attr('src', $('#map_iframe').attr('src'));
fonte
(function (elem) { elem.src = elem.src; }($('#iframe')[0]));
document.getElementById(FrameID).contentWindow.location.reload(true);
não estão funcionando corretamente. Essa resposta funciona melhor.você também pode usar o jquery. É o mesmo que Alex propôs usando o JQuery:
fonte
var f = $('#iframeX') ; f.attr( 'src', f.attr( 'src' ))
pode ser mais robusto para manter e lerRecarregar um iframe com jQuery
faça um link dentro do iframe, digamos com id = "reload" e use o código a seguir
e você está pronto para usar todos os navegadores.
Recarregue um iframe com HTML (sem necessidade de Java Script)
Possui uma solução mais simples: que funciona sem javaScript (FF, Webkit)
basta fazer uma âncora no lado do seu iframe
Quando você clica nessa âncora, apenas atualiza seu iframe
Mas se você tiver um parâmetro enviado para o seu iframe, faça o seguinte.
não precisa de nenhum URL de página porque -> target = "_ SELF" faz isso por você
fonte
com jquery você pode usar isto:
fonte
Apenas retribuindo a resposta de Alex, mas com o jQuery
fonte
Aqui está outra maneira
fonte
$( '#iframe' ).attr('src', $( '#iframe' ).attr('src'));
Tenho certeza de que todos os exemplos acima apenas recarregam o iframe com seu src original, não com o URL atual.
Isso deve ser recarregado usando o URL atual.
fonte
Se você for de domínio cruzado, simplesmente definir o src de volta para o mesmo URL nem sempre acionará uma recarga, mesmo que o hash do local seja alterado.
Deparei com esse problema ao criar manualmente iframes de botão do Twitter, que não eram atualizados quando eu atualizava os URLs.
Os botões do tipo Twitter têm a forma:
.../tweet_button.html#&_version=2&count=none&etc=...
Como o Twitter usa o fragmento de documento para o URL, a alteração do hash / fragmento não recarregou a fonte e os destinos do botão não refletiram meu novo conteúdo carregado com ajax.
Você pode anexar um parâmetro de string de consulta para forçar o recarregamento (por exemplo:
"?_=" + Math.random()
mas isso desperdiçará largura de banda, especialmente neste exemplo em que a abordagem do Twitter estava especificamente tentando ativar o cache.Para recarregar algo que muda apenas com tags de hash, é necessário remover o elemento ou alterá-lo
src
, aguarde a saída do encadeamento e atribua-o novamente. Se a página ainda estiver em cache, isso não exigirá uma ocorrência na rede, mas acionará o recarregamento de quadros.Atualização : o uso dessa abordagem cria itens de histórico indesejados. Em vez disso, remova e recrie o elemento iframe toda vez, o que mantém esse botão voltar () funcionando conforme o esperado. Também é bom não ter o cronômetro.
fonte
Apenas respondendo a resposta de Alex, mas com o jQuery:
Ou você pode usar uma função pequena:
Espero que ajude.
fonte
fonte
Isso é possível com JavaScript simples.
window.frames
sintaxe para disparar uma função JavaScript no iframe2. Apenas certifique-se de usar oid
/name
do iframe2 e não osrc
.fonte
// atualiza todos os iframes na página
fonte
A solução entre navegadores é:
isso é útil especialmente quando <iframe> é o destino de um <form>
fonte
RESOLVIDO! Registro-me no stockoverflow apenas para compartilhar com você a única solução (pelo menos no ASP.NET/IE/FF/Chrome) que funciona! A idéia é substituir o valor innerHTML de uma div pelo seu atual valor innerHTML.
Aqui está o trecho HTML:
E meu código Javascript:
Espero que isto ajude.
fonte
runat="server"
é aplicável; 2. Por que todas as tampasIFRAME
? 3. os valores dos atributos de dimensão não têm unidades; 4.frameborder
foi descontinuadoVocê precisa usar
para encontrar a origem do iframe e seu URL precisa estar no mesmo domínio do pai.
fonte
você pode fazer assim
fonte
A solução abaixo funcionará com certeza:
fonte