javascript - 页面完全写入后,从 cgi 重定向到 html

标签 javascript html perl dwr

我搜索了一个与我相似的案例,发现相关帖子很少,但没有一个能回答我的问题。

我正在执行的 cgi 脚本正在处理一些数字,最后吐出一个 html 文件。我正在控制此 html 文件的位置,并在成功提交 html 表单后显示的临时网站上提供它的 url。

输出的 html 是瞬间创建的,或者说它不是立即创建的。

有没有办法在我的临时cgi页面中检查html是否已经完全写入然后自动重定向到它?如果页面尚未准备好,我希望用户留在当前页面上。

目前,在我的临时 cgi 页面上,我显示“检查”和“终止”按钮,您可以在其中检查状态/终止它。单击“检查”并且网站准备就绪后,我将重定向到它。 我还显示了 html 文件的 url,您可以访问该文件,但如果立即访问,只会显示该页面的一个片段。

我希望刷新/重定向是自动的,这样用户就不必点击任何东西。

我在其他地方看到过“尝试加载一个已知的小图像并检测加载是否完成”的想法:

<img src="http://www.example.com/image.jpg"
  onload="window.location='http://www.example.com';"
  onerror="window.location='#';">

我喜欢这样,但它并不完美。如果不提交表单,我的临时 cgi 页面将不会进一步将 url 传递给结果 html(这里没有 GET,没有 POST,因为没有使用表单)。我再次希望重定向尽可能自动进行。

总结一下:我如何从 CGI.pm 生成的页面内部检查外部 html 页面是否已准备好重定向到? DWR ( http://directwebremoting.org ) 是唯一的解决方案吗?

我很乐意接受一些 JavaScript 解决方案。

编辑:

我在提交初始表单后立即开始写入结果页面,并不断向其中添加内容。 由于页面从一开始就存在(但不完整),因此按照已经建议的方式检查非 404 响应(然后重定向)并不容易/不可能。

最佳答案

由于您控制结果 HTML 的编写,我假设从 CGI 生成的页面和静态结果都在同一个域中。在“等待”页面上设置一个使用 .setInterval 定期调用的函数,该函数将尝试使用 AJAX 请求结果页面,并在收到非 404 响应后立即设置 window.location 到结果页面。还为用户提供一些视觉指示器/分散注意力,这样他们就不会认为自己卡住了。

当你生成你的结果页面时,你应该先用一些临时文件名保存它,然后在完成后将它重命名为最终名称,这样它就不会在完成之前出现在预期的地址。

关于javascript - 页面完全写入后,从 cgi 重定向到 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11293773/

相关文章:

perl - 需要一种算法来创建类似 google 的单词搜索

perl - 有没有办法从 XS 访问 perl 中的特殊标记?

javascript - Istanbul 尔不断将覆盖率报告 HTML 文件转储到错误的目录中

javascript - Angular ReactiveForms FormArray removeAt 移除FormArray中的所有元素

javascript - 如何使用按钮的 onchange 事件来运行所选按钮的 onclick 功能?

regex - Perl 读取行和下一行

javascript - 基于元素数组中的父属性构建javascript树

javascript - 将参数传递给现有的 onClick JS 函数

html - 如何使用 CSS 添加 Open Sans .ttf?

HTML 输入类型 ="tel"与输入模式 ="tel"