难道window.onbeforeunload()火在所有浏览器?我需要一个至少由IE6和FF3.6支持的onbeforeunload功能.
对于IE,onbeforeunload()似乎只有IE9支持
显然,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窗口已关闭
问题是滚动容器是div,而不是body。这会导致 Google Chrome 和 iOS 无法记住div用户转到另一个页面然后返回后的滚动位置。
相关的CSS代码如下。滚动容器是#container.
* {
margin: 0;
padding: 0;
}
html {
height: 100%;
}
body {
height: 100%;
overflow: hidden;
}
#container {
height: 100%;
overflow: auto;
}
Run Code Online (Sandbox Code Playgroud)
而这里是一个演示上的jsfiddle。请在 Google Chrome 和 iOS 上重现该问题,方法是将内容滚动到大约 50%(或任何其他明显长度),单击超链接转到另一个页面,然后单击浏览器的后退按钮。
有没有一种简单的方法可以让 Google Chrome 和 iOS 像 Firefox 一样记住滚动位置?
== 编辑以回应答案 ==
一个简单的 .html 文件,用于测试是否有任何代码onbeforeunload有效。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<script>
window.onbeforeunload = function () {
alert('Are …Run Code Online (Sandbox Code Playgroud) 我正在使用chrome扩展,我的清单加载了一个背景页面:
...
"background": { "scripts": ["background_page.js"], "persistent": false },
...
Run Code Online (Sandbox Code Playgroud)
.js代码如下所示:
var once = false;
window.addEventListener("load", function () {
if ( once == true ) { return; }
alert( 'test' );
once = true;
}, false);
Run Code Online (Sandbox Code Playgroud)
这似乎工作正常,但我想每次浏览器启动时只运行一次background_page.js代码.
现在,我不知道为什么,但代码执行不止一次.起初我以为每次打开新标签时都会执行,但情况并非如此.一旦我启动浏览器就会出现警报,然后如果我快速打开一个新标签,警报就不会出现,但是如果我等待大约1分钟左右并打开一个新标签,则警报会再次出现.
如何确保每次浏览器启动时background_page.js代码只运行一次?
browser google-chrome browser-extension google-chrome-extension
我正在制作一个简单的脚本,用于在用户访问页面和离开页面时保存一些数据以及其他一些页面详细信息。该脚本“有效”,但并非始终有效。它似乎偶尔工作。我没有收到控制台错误。服务器端工作正常。
window.onload = function() {
var timeStarted, i, c, l, timeLeft, pageData;
timeStarted = new Date().getTime();
i = <?php echo $model->id; ?>;
c = <?php echo $model->cat; ?>;
l= <?php echo $model->loc; ?>;
window.onbeforeunload = function(){
timeLeft = new Date().getTime();
pageData = [{name: 'timeStarted', value: timeStarted},
{name: 'i', value: job},
{name: 'c', value: cat},
{name: 'l', value: loc},
{name: 'timeLeft', value: timeLeft}];
// Set url for JavaSCript
var url = '<?php echo Yii::app()->createUrl("item/viewedItemInformation"); ?>';
<?php echo CHtml::ajax(array(
'url'=>'js:url',
'data'=> "js: …Run Code Online (Sandbox Code Playgroud) 我有一个简单的示例页面,当您单击链接时,我正在使用弹出子弹出窗口.当父母关闭时,我一直在尝试各种卸载事件来关闭子窗口,但似乎无法弄清楚我所缺少的与简单编码有关的内容.
弹出窗口完美无缺,但关闭父窗口会使弹出窗口保持打开状态.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<a href='javascript:void(0);' onclick='window.open("http://example.com/files/foldername/","pagename","width=800, height=800");' target='windowname'><font color="#70c7c8">Link Name</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)