caf*_*ffo 229 javascript iframe
我想重新加载一个<iframe>
使用JavaScript.我发现到目前为止最好的方法是将iframe的src
属性设置为自身,但这不是很干净.有任何想法吗?
Ed.*_*Ed. 213
document.getElementById('some_frame_id').contentWindow.location.reload();
Run Code Online (Sandbox Code Playgroud)
要小心,在Firefox中,window.frames[]
不能通过id索引,而是通过名称或索引
小智 187
document.getElementById('iframeid').src = document.getElementById('iframeid').src
Run Code Online (Sandbox Code Playgroud)
它将重新加载iframe
,甚至跨域!经过IE7/8,Firefox和Chrome测试.
小智 60
如果使用jQuery,这似乎工作:
$('#your_iframe').attr('src', $('#your_iframe').attr('src'));
Run Code Online (Sandbox Code Playgroud)
我希望stackoverflow不会太难看.
scu*_*ffe 13
window.frames['frameNameOrIndex'].location.reload();
Run Code Online (Sandbox Code Playgroud)
Yoh*_* AI 13
添加空白空间也会自动重新加载iFrame.
document.getElementById('id').src += '';
Run Code Online (Sandbox Code Playgroud)
由于原始策略相同,因此在修改指向其他域的iframe时无效.如果您可以定位较新的浏览器,请考虑使用HTML5的跨文档消息传递.您可以在此处查看支持此功能的浏览器:http://caniuse.com/#feat=x-doc-messaging.
如果您无法使用HTML5功能,那么您可以按照此处列出的技巧进行操作:http://softwareas.com/cross-domain-communication-with-iframes.该博客条目也很好地定义了问题.
我只是在chrome中遇到这个问题,唯一可行的方法是移除和更换iframe。例:
$(".iframe_wrapper").find("iframe").remove();
var iframe = $('<iframe src="' + src + '" frameborder="0"></iframe>');
$.find(".iframe_wrapper").append(iframe);
Run Code Online (Sandbox Code Playgroud)
非常简单,其他答案未涵盖。
src
在我的情况下,简单地替换iframe 元素的属性并不令人满意,因为在加载新页面之前,人们会看到旧内容。如果您想提供即时的视觉反馈,这会更有效:
var url = iframeEl.src;
iframeEl.src = 'about:blank';
setTimeout(function() {
iframeEl.src = url;
}, 10);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
403322 次 |
最近记录: |