标签: window.onunload

window.onunload在Chrome浏览器中无法正常运行.谁能帮我?

我写了这段代码

function winUnload() {
    alert("Unload Window");
    MyMethod();
}

window.onunload = function() { winUnload(); }
Run Code Online (Sandbox Code Playgroud)

此代码在IE和Firefox中运行良好.但是此代码在Chrome中无效.双方的陈述alert("Unload Window");MyMethod();不工作.

javascript browser onunload window.onunload

31
推荐指数
4
解决办法
12万
查看次数

Chrome中的window.onbeforeunload:最近的修复是什么?

显然,window.onbeforeunload已经遇到了Chrome的问题,正如我从遇到的所有问题中看到的那样.最近的工作是什么?

我唯一接近工作的是这个:

window.onbeforeunload = function () { return "alert" };
Run Code Online (Sandbox Code Playgroud)

但是,如果我用"alert"("blah")之类的东西替换返回"alert",我从Chrome中得不到任何结果.

我在这个问题中看到谷歌有意阻止了这一点.对他们有好处......但如果有人关闭窗口我想要进行AJAX调用怎么办?在我的情况下,我想知道有人离开我的网站上的聊天室,由窗口关闭发出信号.

我想知道是否有办法
(a):修复window.onbeforeunload调用以便我可以将AJAX放在那里

(b):获取一些其他方法来确定Chrome窗口已关闭

javascript onbeforeunload window.onunload

25
推荐指数
2
解决办法
5万
查看次数

捕获window.onbeforeunload确认对话框的结果

是否有一种方法可以捕获window.onbeforeunload确认对话框的结果,如Stack Overflow中的下一个(当离开'Ask Question'页面而不发布问题时会发生这种情况)?

这就是它在Chrome中的显示方式,我相信它在其他浏览器中略有不同,但你总是有某种形式的是/否按钮.

window.onbeforeunload确认对话框

据推测,如果事件被触发后他们仍然在违规页面上,他们选择留下来,你可以通过观察js序列来解决这个问题.但是我想知道如何确定他们是否点击了"离开此页面"

我已经实现了如下:

// concept taken from SO implementation
function setConfirmUnload(showMessage, message) {
    window.onbeforeunload = showMessage ? (message ? message : "this is a default message") : null;
}

// pseudo code
listen to changes on inputs
if any inputs fire a change event
   call setConfirmUnload(true, 'My warning message')
Run Code Online (Sandbox Code Playgroud)

请注意我在我的网站中使用jQuery.

我本质上是在尝试实现像绘图实现一样的Gmail,其中如果用户离开带有表单的页面,他们已经进行了更改而没有保存,他们会使用类似的对话框加热.如果他们选择丢弃他们的更改并离开页面,我需要清理数据库中的一些临时记录(我正在考虑一个AJAX调用,或者只是提交带有delete标志的表单)然后在他们的路上发送它们.

我的问题还涉及:

在手动刷新后获取页面后,onunload处理程序中的jQuery AJAX调用触发.我如何保证首先发生onunload?

javascript jquery javascript-events onunload window.onunload

12
推荐指数
3
解决办法
2万
查看次数

为什么window.open(...).onunload = function(){...}无法正常工作?

我希望能够告诉我打开的窗口何时被用户关闭.这是我试图监控这个的代码:

<html>
  <head>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
    <script type="text/javascript">
        window.document.onready = function () {
            document.getElementById('openWindow').onclick = function () {
                var windowref = window.open('tests2.html');
                windowref.onunload =  function () {
                    window.alert('hola!');
                };
            };
        };
  </script>
</head>
<body>
  <button id='openWindow'>Open Window</button>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我希望这会提醒"hola!" 在打开的窗口window.open关闭后的原始窗口中.相反,它警告"hola!" 在打开新窗口后立即在原始窗口中window.open.它为什么这样工作?有办法做我想做的事吗?

javascript javascript-events window.open window.onunload

11
推荐指数
1
解决办法
2万
查看次数

10
推荐指数
1
解决办法
1万
查看次数

OnUnload警告错误"NS_ERROR_NOT_AVAILABLE"

<html>
<body>

<button type="button" onclick="clickme()">Click Me</button>

<script>
var test = 0;

function clickme() {
  test = 1;
  console.log(test);
}

window.onunload = function() {
  alert("test");
}
</script>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我正在使用这个简单的代码来测试onunload和onbeforeunload的一些东西.出于某种原因,每当我刷新/离开页面并导致onunload事件时,我都不会在Firebug控制台中收到警报和错误.如果我使用onbeforeunload这工作,我没有错误,但我听说onbeforeunload不是很好的跨浏览器.

NS_ERROR_NOT_AVAILABLE: Component returned failure code: 0x80040111     
(NS_ERROR_NOT_AVAILABLE) [nsIDOMWindow.alert]

alert("test");
Run Code Online (Sandbox Code Playgroud)

我没有试图提醒测试变量,只是文本"测试"之前任何人都试图指出这一点.

javascript alert onunload window.onunload

5
推荐指数
1
解决办法
2万
查看次数

检测chrome扩展弹出窗口何时关闭并保存数据

当用户未按"保存"并且Chrome扩展程序弹出窗口关闭或导航到其他选项卡时,我正在尝试防止信息丢失.我从弹出窗口保存文本,并在弹出窗口再次打开后将其放回原处.

所以,我有这个代码来检测background.js中的关闭弹出窗口:

var backgroundPage = chrome.extension.getBackgroundPage();
window.addEventListener("unload", function() {
    if(saved === false) {
       var savedText = document.getElementById('textbox').value;
       localStorage.setItem('text', savedText);
       backgroundPage.console.log(localStorage.getItem('text'));
     }
}, true);
Run Code Online (Sandbox Code Playgroud)

在另一个函数中,一旦再次加载弹出窗口,我将数据设置为

if(localStorage.getItem('text') !== "") {
   document.getElementById('text').value = localStorage.getItem('title');
}
Run Code Online (Sandbox Code Playgroud)

但是,这有时只能起作用.我看过其他帖子,铬有一个bug:检测卸载事件.但是,我看到的问题很奇怪.当我没有我的后台页面检查视图打开时,导航离开并重新打开后,数据不会显示在弹出窗口的文本框中.但是,如果我的背景页面检查视图打开,数据显示在文本框中...我是Chrome扩展开发的新手,有人可以帮我解决这个问题吗?

我还尝试了为消息传递设置端口的其他建议,但不确定如何正确执行此操作.在background.js中:

 port.onDisconnect.addListener(function() {
    backgroundPage.console.log("Disconnected");
 })
Run Code Online (Sandbox Code Playgroud)

我需要什么吗?我在哪里设置端口和chrome.runtime.onConnect?这是什么代码?

javascript jquery popup google-chrome-extension window.onunload

5
推荐指数
0
解决办法
1467
查看次数