强制同步 iframe 加载
Force synchronous iframe load
我有一个指向任意外部域http://A
的 iframe。我想将其发送到另一个http://B
用户事件的外部域。
假设http://B
加载速度很慢。如果我只是设置iframe.src = "http://B"
,那么 iframe 将保持内容不A
,直到B
完全下载并可以渲染。这让用户感到困惑,因为他们要求B
,但他们看到的只是A
。
我想从我的域加载一个页面,比如../html/loading.html
,介于A
和B
之间。假设此页面加载始终很快。
我观察到设置iframe.src
是异步的。请考虑以下代码:
iframe.src = '../html/loading.html';
iframe.src = 'http://B';
这将跳过开场../html/loading.html
,直接转到http://B
。(无论loading.html
有多快,或者B
有多慢)。我也尝试这样做:
iframe.src = '../html/loading.html';
iframe.contentWindow.location.reload();
iframe.src = 'http://B';
但是,这引发了跨域错误,说我无法访问http://A
contentWindow
的内容(因为loading.html
尚未加载,我们仍在http://A
,我无法强制重新加载)。
有没有办法强制 iframe 执行 URL 的同步加载?我正在编写一个Chrome扩展程序,所以如果它必须特定于crx
那也没关系。
您需要在当前 URL 加载
完成后立即加载下一个 URL,幸运的是,iframe 有一个我们可以使用的 onload 事件。
您需要执行以下操作:
iframe.src='../html/loading.html'
//load the next page after finishing loading the last one
iframe.onload=function(){iframe.src='http://B';}
试试这个:
最初 iframe 应该加载加载.html使用
iframe.src = '../html/loading.html';
在加载.html的客户端加载事件中,应使用
iframe.src = 'http://B';
相关文章:
- 使用php脚本验证访问者的年龄,并在不刷新的情况下根据结果加载iframe
- 使用Javascript(或jQuery)加载iframe内容
- Internet Explorer重新加载IFrame
- Fine Uploader-未收到来自已加载iframe的有效消息
- 使用本地生成的代码通过 JavaScript 加载 IFrame
- 加载iframe时激发的事件
- 动态渲染 .mht 文件,无需加载/iframe/嵌入
- 如何在选择列表项时重新加载iframe
- 如何使用JavaScript在iframe中重新加载iframe
- 在featherlight.js中延迟加载iFrame
- 实时在更改时重新加载iframe脚本
- 如何在不闪烁的情况下加载Iframe
- 如何按时间间隔重新加载Iframe内容,使其不会闪烁
- 设置 URL 以在 Django 模板中加载 iframe
- 在离开页面之前加载 iframe
- 加载 Iframe src,并从水平下拉菜单中进行选择
- 同时加载 iframe 并重置文档位置
- 单击按钮时重新加载 iframe 内容(本地 HTML)
- 单击元素时重新加载 iframe src
- 在可见时加载 iframe