1つのページに2つのiframeがあり、一方は他方に変更を加えますが、もう一方のiframeは更新するまで変更を表示しません。 jQueryでこのiframeを更新する簡単な方法はありますか?
<div class="project">
<iframe id="currentElement" class="myframe" name="myframe" src="http://somesite.com/something/new"></iframe>
</div>
Iframeが別のドメインにない場合は、次のようにします。
document.getElementById(FrameID).contentDocument.location.reload(true);
しかし、iframeは別のドメインにあるため、 same-Originポリシー によってiframeのcontentDocument
プロパティへのアクセスが拒否されます。
ただし、コードがiframeの親ページで実行されている場合は、src属性を自分自身に設定することで、クロスドメインのiframeを強制的にリロードさせることができます。このような:
// hackishly force iframe to reload
var iframe = document.getElementById(FrameId);
iframe.src = iframe.src;
あなたが他のiframeからiframeをリロードしようとしているなら、あなたは運が悪いです、ということはではありません可能です。
$( '#iframe' ).attr( 'src', function ( i, val ) { return val; });
jqueryも使えます。これは、AlexがJQueryを使って提案したものと同じです。
$('#currentElement').attr("src", $('#currentElement').attr("src"));
jQueryを使ってiframeをリロード
iframeの内側にリンクを張って、id = "reload"で言って次のコードを使う
$('#reload').click(function() {
document.location.reload();
});
そして、あなたはすべてのブラウザで行くのが得意です。
iframeをHTMLでリロードします(Java Scriptは必要ありません)
よりシンプルな解決策があります。(FF、Webkit)では、Javaスクリプトなしで動作します。
あなたのiframeの中にアンカーを入れるだけです
<a href="#" target="_SELF">Refresh Comments</a>
このアンカーをクリックすると、iframeが更新されます
しかしあなたのiframeにパラメータを送る場合は、以下のようにしてください。
<a id="comnt-limit" href="?id=<?= $page_id?>" target="_SELF">Refresh Comments</a>
- > target = "_ SELF"があなたのためにそれをするので、ページのURLを必要としません
jqueryではこれを使うことができます。
$('#iframeid',window.parent.document).attr('src',$('#iframeid',window.parent.document).attr('src'));
アレックスの答えをただjQueryで往復するだけ
var currSrc = $("#currentElement").attr("src");
$("#currentElement").attr("src", currSrc);
上記のすべての例では、iframeを現在のURLではなく、元のsrcのみで再ロードすることを確信しています。
$('#frameId').attr('src', function () { return $(this).contents().get(0).location.href });
現在のURLを使用してリロードする必要があります。
これは別の方法です
$( '#iframe' ).attr( 'src', function () { return $( this )[0].src; } );
Alexの答えをjQueryで往復させるだけです。
var e = $('#myFrame');
e.attr("src", e.attr("src"));
あるいは、あなたは小さな関数を使うことができます:
function iframeRefresh(e) {
var c = $(e);
c.attr("src", c.attr("src"));
}
助けになれば幸いです。
$('IFRAME#currentElement').get(0).contentDocument.location.reload()
クロスドメインの場合、srcを同じURLに戻すだけでは、たとえロケーションのハッシュが変わっても、必ずしもリロードを引き起こすわけではありません。
手動でTwitterボタンのiframeを作成しているときにこの問題に遭遇しました。これはURLを更新しても更新されません。
Twitterのようなボタンは次のような形式になっています:.../Tweet_button.html#&_version=2&count=none&etc=...
TwitterはURLにドキュメントフラグメントを使用しているので、ハッシュ/フラグメントを変更してもソースはリロードされず、ボタンターゲットは私の新しいAjaxロードコンテンツを反映しませんでした。
リロードを強制するためのクエリ文字列パラメータを追加することができます(例:"?_=" + Math.random()
)、特にTwitterのアプローチが特にキャッシュを有効にしようとしているこの例では、帯域幅を浪費します。
ハッシュタグだけで変更されるものをリロードするには、要素を削除するか、src
を変更し、スレッドが終了するのを待ってから割り当てなおす必要があります。ページがまだキャッシュされている場合、これはネットワークヒットを必要としないはずですがフレームリロードを引き起こします。
var old = iframe.src;
iframe.src = '';
setTimeout( function () {
iframe.src = old;
}, 0);
更新:この方法を使用すると、不要な履歴項目が作成されます。代わりに、毎回iframe要素を削除して再作成してください。これにより、このback()ボタンは正常に機能し続けます。タイマーがないのもいいですね。
これは単純なJavaScriptで可能です。
window.frames
構文を使用してiframe2のJavaScript関数を起動します。 id
ではなく、iframe2のname
/src
を必ず使用してください。//function in iframe1
function refreshIframe2()
{
if (<cfoutput>#didValidation#</cfoutput> == 1)
{
parent.window.frames.iframe2.refreshPage();
}
}
//function in iframe2
function refreshPage()
{
document.location.reload();
}
//ページ上のすべてのiframeを更新する
var f_list = document.getElementsByTagName('iframe');
for (var i = 0, f; f = f_list[i]; i++) {
f.src = f.src;
}
解決しました!私は、(少なくともASP.NET/IE/FF/Chromeで)機能する唯一の解決策をあなたに共有するためだけにstockoverflowに登録します!アイデアはdivのinnerHTML値を現在のinnerHTML値に置き換えることです。
これがHTMLスニペットです。
<div class="content-2" id="divGranite">
<h2>Granite Purchase</h2>
<IFRAME runat="server" id="frameGranite" src="Jobs-granite.aspx" width="820px" height="300px" frameborder="0" seamless ></IFRAME>
</div>
そして私のJavascriptコード:
function refreshGranite() {
var iframe = document.getElementById('divGranite')
iframe.innerHTML = iframe.innerHTML;
}
お役に立てれば。
あなたはこれのようにそれをすることができます
$('.refrech-iframe').click(function(){
$(".myiframe").attr("src", function(index, attr){
return attr;
});
});
ifrX =document.getElementById('id') //or
ifrX =frames['index'];
クロスブラウザソリューションは次のとおりです。
ifrX.src = ifrX.contentWindow.location
これは、<iframe>が<form>のターゲットの場合に特に便利です。
あなたが使用する必要があります
[0] .src
iframeのソースとそのURLを見つけるには、親の同じドメインにある必要があります。
setInterval(refreshMe, 5000);
function refreshMe() {
$("#currentElement")[0].src = $("#currentElement")[0].src;
}