我有一个iframe放在我的页面的主体中,如下所示:
<iframe src="about:blank" onload="this.contentWindow.document.write('some text')">
Run Code Online (Sandbox Code Playgroud)
它工作得很好,onload事件用"some text"替换iframe的内容就是这样.
但是在Firefox中它会导致旋转轮"加载指示器",它会向您显示正在加载的页面永远不会消失.只有文本插入到iframe中,因此没有其他内容挂起,等待加载.当我从页面中删除iframe时,它会删除问题,所以我知道,这就是导致它的iframe.
它在IE和Chrome中正常运行.
现在,我可以这样做:
<iframe src="about:blank" onload="this.contentWindow.document.write('some text'); t.contentWindow.stop();">
Run Code Online (Sandbox Code Playgroud)
这解决了Firefox中的问题,但它阻止了iframe中的任何图像加载(我不在示例插入文本中使用任何图像,但稍后会添加它们).
那么,我该如何解决这个问题呢?
我正在使用 CURL 从外部 url 下载一个大文件并将其保存在我的服务器上。这可能需要几分钟的时间。下载运行时,我使用curl_setopt($ch, CURLOPT_PROGRESSFUNCTION,.. 运行匿名函数,该函数定期使用当前下载信息更新我的 $_SESSION['download_progress'] 变量。
现在,所有这些都发生在 upload.php 文件中,当用户等待文件下载时,我使用 javascript 请求 Progress.php 页面,其中包含以下简单代码:
session_start();
echo $_SESSION['download_progress'];
Run Code Online (Sandbox Code Playgroud)
这允许我的 JavaScript 代码显示有关下载进度的信息。
除非它不起作用。
在“upload.php”完成加载之前,“progress.php”页面不会加载(换句话说,两个页面仅在文件下载完成后才加载),这不好。session_start() 以某种方式阻止“progress.php”页面加载。我使用自己的服务器(apache + php 5.4),所以我拥有所有管理权限。
我怎么解决这个问题?我可以使用一些丑陋的解决方法,例如将下载信息写入文本文件而不是会话变量,然后使用 javascript 直接读取该文本文件,但我宁愿不这样做。
谢谢