Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检测移动到不同的域页面?_Javascript_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Javascript 如何检测移动到不同的域页面?

Javascript 如何检测移动到不同的域页面?,javascript,ruby-on-rails,ruby-on-rails-3,Javascript,Ruby On Rails,Ruby On Rails 3,我有一个RubyonRails应用程序,我想检测用户移动到不同的域页面 在模型创建向导中。 我在向导的第一步将模型数据存储到DB中,并将_重定向到向导的第二步。 若用户在第二步中移动到不同的域页面,我想销毁它 我已经找到了一种方法来钩住BeforeLoad事件以向用户显示警告。 但我想警告它,只有当用户移动到不同的域页面,而不是第三步。 若用户想移动不同的域页面,那个么我想销毁存储的数据 这样做的最佳解决方案是什么?有没有办法检测用户想去哪里 编辑: 在第二步中,我想从用户上传文件(带有jQue

我有一个RubyonRails应用程序,我想检测用户移动到不同的域页面 在模型创建向导中。 我在向导的第一步将模型数据存储到DB中,并将_重定向到向导的第二步。 若用户在第二步中移动到不同的域页面,我想销毁它

我已经找到了一种方法来钩住BeforeLoad事件以向用户显示警告。 但我想警告它,只有当用户移动到不同的域页面,而不是第三步。 若用户想移动不同的域页面,那个么我想销毁存储的数据

这样做的最佳解决方案是什么?有没有办法检测用户想去哪里

编辑: 在第二步中,我想从用户上传文件(带有jQuery文件上传器的ajax上传)创建模型,并与第一步的模型相关联。所以,如果我可以得到哪个id将分配给第一步的模型,那么我可以很容易地与它关联。这就是为什么我想在第一步中存储数据

我不想在用户明确离开向导之前终止未定义的模型。 然后,我可以检测到用户是否仍在打开向导,只是停止了很长时间,或者 已经离开向导页面了吗?
(我想构建一个类似于桌面应用程序的应用程序,这样用户就可以拥有未保存的文件,直到在多个浏览器窗口上明确地离开向导)

这是不可能的。卸载页面后,您将无法执行任何其他操作。如果用户正在加载另一个域页面,则该域控制该页面,而不是您


您应该做的不是将向导页面的数据存储在db中,而是存储在会话状态中,甚至存储在cookie中,这是一个很好的实践。然后,当用户到达向导的最后一步时,您从cookie/session中读取数据并立即写入db。

您无法在
onbeforeunload
事件或任何其他事件中确定用户的预期目的地。您也不能停止用户加载另一个页面的请求,而是在发送它们之前将它们重定向到某个
destroy
操作

如果您满足于在用户完成向导的过程中在每个步骤中将数据存储到数据库中,则可以考虑设置cron作业来运行您创建的rake任务,该任务可以完成并删除超过某个时间段的不完整向导

<> Pr>实际上,如果你能发现用户离开你的网站,我会考虑做一些事情。