Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.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 用户关闭浏览器时的http put_Javascript_Angularjs_Http - Fatal编程技术网

Javascript 用户关闭浏览器时的http put

Javascript 用户关闭浏览器时的http put,javascript,angularjs,http,Javascript,Angularjs,Http,我试图在用户关闭浏览器时发出put请求以保存一些内容。 我使用angular,我尝试过使用onbeforeunload和onunload事件,但没有让它按我想要的方式工作。我有一个要更新的资源 $window.onbeforeunload = function(){ myResource.foo = closingBrowser(); myResource.$update();} 在fiddler运行时,我发现这不会执行put请求。当我使用$window.o

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

    $window.onbeforeunload = function(){
       myResource.foo = closingBrowser();
       myResource.$update();}
在fiddler运行时,我发现这不会执行put请求。当我使用
$window.onunload
时也不会。但是,如果我在卸载之前输入返回语句到
onbeforeuload
,确认框就会弹出,当我单击OK时,fiddler会显示put请求已经完成。现在我不想要这个弹出窗口,我只想在用户关闭浏览器时放置

有没有一种方法可以让我用这些方法来解决这个问题,或者我必须用其他方法来解决这个问题(非常感谢你的建议)

更新:

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

在chrome中:无论我按cancel返回,还是按Ok离开,PUT都会被发送。另一个在chrome中起作用但没有ie的“黑客”(hack)是在
$update()
之后有一个循环,比如:
而(!myResource.$resolved){}
(或者只是一个for循环迭代了几百万次也起作用,但看起来更难看),chrome实际上发送PUT(即没有)

你认为这将如何在IE中复制


我没有在firefox上做过广泛的测试,但我做的很少,它看起来更像是chrome。

你无法跳出这个弹出窗口(“你想关闭这个窗口吗?”)。 我认为最好的解决方案是下一步:

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

  • 在没有弹出窗口的情况下无法发送http put吗?我不想让用户停留在页面或其他任何位置,只需在浏览器或选项卡关闭时发送put。如果页面将关闭,浏览器将中止put查询