Mat*_*att 8 javascript safari iframe
我有一个页面加载最初只是iframe中的一个表单,如下所示:
<iframe id="oIframe" ...src='somePage>'
<form ... />
</iframe>
当您单击表单中的按钮时,会调用一些构建URL的javascript,然后我想执行以下操作:
frame.src = 'somePage?listId=1';
这在IE中用于"重新加载"具有新内容的帧.但是,在Safari中这不起作用.
我有jQuery可用,但我不想替换现有的iframe,因为它附加了事件.我也无法修改iframe的id,因为它在整个应用程序中被引用.
我已经看到了一些类似的问题,但没有解决方案似乎适合我的确切问题.
任何人都可以提供的任何帮助都会很棒!
某些浏览器在直接从javascript层次结构调用javascript对象时不使用"src",而其他浏览器使用"location"或"href"而不是"src"来更改url.您应该尝试使用这两种方法来使用新网址更新iframe.
为了防止浏览器缓存,将一个伪随机字符串(如数字和时间戳)添加到URL以防止缓存.例如,将"new Date().getTime()"添加到您的网址.
一些调用示例:
document.getElementById(iframeId).src = url;
Run Code Online (Sandbox Code Playgroud)
要么
window.frames[iframeName].location = url;
Run Code Online (Sandbox Code Playgroud)
我建议使用document.getElementById的第一个选项
您也可以强制使用iframe重新加载页面
document.getElementById(iframeId).reload(true);
Run Code Online (Sandbox Code Playgroud)
所以答案很简单:
1.<div id="container"> </div>
在你的页面上放置
2.当需要重新加载时使用以下jQuery:
$("#container").empty();
$("#container").append("<iframe src='" + url + "' />");
Run Code Online (Sandbox Code Playgroud)
就是这样.当然,有更优雅的方式使用jQuery创建DOM,但这提供了"刷新"iframe的想法.适用于FF18,CH24,IE9,O12(这是它的jQuery所以它几乎总是可以工作:)
我使用 jQuery.ajax 找到了一个更好的解决方案(尽管不是特别雄辩):
jQuery.ajax({
type: 'GET',
url: "/somePage?someparms",
success: function() {
frameObj.src = "/somePage?someparms";
}
});
Run Code Online (Sandbox Code Playgroud)
这会强制在框架对象内读取 DOM,并在服务器准备好响应时重新加载它。
归档时间: |
|
查看次数: |
33103 次 |
最近记录: |