2

我有一个页面,用户可以在该页面上提交包含视频的表单。我在视频上传时放置了一条“请稍候,现在上传”的消息,但显然这还不够。

SO:我想确保用户不会意外离开页面,所以我使用了以下代码:

window.onbeforeunload = function() {
    return "Please make sure, the video has finished uploading before closing this window";
 };

只是有一个问题:系统包含两个单独的 .php 文件;一个表格和一个上传/感谢页面。这意味着如果我将代码放在表单上,​​它会过早执行代码(当按下提交按钮时),如果我将它放在 send.php 文件中,它会执行得太晚,因为视频必须在运行 head-tag 之前上传。

有什么好主意吗?

PS 一个可能的解决方案是将代码放在表单页面上并使用 AJAX 和文件处理能力解决方法调用页面,但我觉得这种解决方法可能导致视频丢失 - 所以我玩得安全。

4

2 回答 2

1

情况解决!

我删除了按钮的提交功能并将其替换为:

<input type="button" name="button" id="button" value="Send video" onclick="sendInformation();" />

然后我创建了一个 javascript,它正在提交信息,但同时初始化 onbeforeunload-code。

document.getElementById("pleasewait").style.visibility = 'visible';
document.getElementById("myForm").submit();
window.onbeforeunload = function(e) {
   return "Please make sure, the video has finished uploading before closing this window."; 
};

它还具有不良影响,即 onbeforeunload 代码在 upload.php 页面完全加载的那一刻失效 - 因此在关闭成功上传时不会询问用户两次。

它完美无缺。

于 2013-08-12T12:12:09.300 回答
0

可以在用户提交表单的时候添加JS代码吗?

<form action="upload.php">
  <input type="file" name="myfile" />
  <input type="submit" />
</form>

上传.php

<?php
  // Validate the data, copy the file, etc.

  echo '<script>window.onbeforeunload = function(e) { return "Please make sure, the video has finished uploading before closing this window"; }</script>';
?>

那应该行得通。但是,我认为您应该选择离开:

<?php
  echo '<script>window.onbeforeunload = function(e) { return confirm("Do you want to leave?"); }</script>';
?>
于 2013-08-11T22:53:32.237 回答