Javascript 用户关闭浏览器时的http put
我试图在用户关闭浏览器时发出put请求以保存一些内容。 我使用angular,我尝试过使用onbeforeunload和onunload事件,但没有让它按我想要的方式工作。我有一个要更新的资源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
$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吗?我不想让用户停留在页面或其他任何位置,只需在浏览器或选项卡关闭时发送put。如果页面将关闭,浏览器将中止put查询