gpt4 book ai didi

javascript - http 当用户关闭浏览器时放置

转载 作者:行者123 更新时间:2023-11-28 08:32:21 24 4
gpt4 key购买 nike

我试图在用户关闭浏览器时发出一个放置请求来保存一些内容。我正在使用 Angular,并且尝试使用 onbeforeunload 和 onunload 事件,但没有让它按照我想要的方式工作。我有一个资源想要更新。

    $window.onbeforeunload = function(){
myResource.foo = closingBrowser();
myResource.$update();}

随着 fiddler 运行,我发现这不会执行放置请求。当我使用 $window.onunload 时也不会。但是,如果我在 onbeforeunload 输入 return 语句,则会弹出确认框,当我单击“确定”时,fiddler 显示 put 请求已完成。现在我不想要这个弹出窗口,我只想在用户关闭浏览器时 PUT 。

我有办法用这些方法来做到这一点,还是必须以其他方式解决它(非常感谢建议)?

更新:

我做了一些更多的测试,发现了一些不一致的行为。在 Internet Explorer (11) 中:如果我有 return 语句,就会出现经典的弹出窗口。但如果我按取消并返回页面,它只会发送 PUT。如果我按 OK 离开,则不会发出 PUT。

在 chrome 中:无论我按“取消”返回,还是按“确定”离开,PUT 仍然会发送。另一个在 chrome 中有效但在 ie 中无效的“hack”(?),当没有返回时(没有弹出窗口,这是想要的行为),是在 $update() 之后有一个循环,就像: while(!myResource.$resolved){} (或者只是迭代几百万次的 for 循环也有效,但它看起来更难看,)chrome 实际上发送了 PUT (IE 没有) .

您认为这会如何在 IE 中复制?

我没有在 Firefox 上进行广泛的测试,但我做了一点点,它看起来更像 Chrome。

最佳答案

你无法逃脱这个弹出窗口(“你想关闭这个窗口bla bla bla ...”)。我认为最好的解决方案是:

  1. 如果用户关闭当前选项卡,浏览器将显示带有您的文本的弹出窗口
  2. 您向服务器发送http put请求,当http请求将调用成功回调时,您将显示自定义弹出窗口(“您的设置或其他内容已保存bla bla bla)
  3. 使用 window.close 关闭窗口

关于javascript - http 当用户关闭浏览器时放置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21695982/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com