gpt4 book ai didi

javascript - 有谁知道如何让 Javascript ‘onunload’ 函数工作吗?

转载 作者:行者123 更新时间:2023-11-28 06:49:56 24 4
gpt4 key购买 nike

我已经查看了所有其他 Javascript“onunload”问题,我想我已经理解了它们,但我似乎仍然无法让这个函数工作。

具体来说,我正在开发一个在 Apple 的 Safari 浏览器下运行的应用程序,并且我正在 try catch 通过单击 Safari 浏览器窗口最左上角的红色“窗口关闭”软糖触发的窗口关闭事件。

如果我单击红色的“关闭窗口”橡皮糖,窗口将关闭,但不会访问和执行“onunload”函数。

但是……如果我重新加载页面,则会访问并执行“onunload”函数。

那很好,但我真正想做的是在单击红色“关闭窗口”软糖后执行一些代码。

我的代码根本不起作用。

我要么误解了某些内容,要么遗漏了某些内容。

有人知道我遗漏了什么或做错了什么吗?

这是我编写的测试源代码,看看我是否可以让 Javascript 的“onunload”函数正常工作:

<!DOCTYPE html>

<html>
<head>
<title>Window - 'onunload' Javascript function Test</title>
<script>
function WindowOnUnLoadTest ()
{ alert ("Entering … 'WindowOnUnLoadTest' …");}
window.onunload=WindowOnUnLoadTest;
</script>
</head>
<body onunload="WindowOnUnLoadTest()">
</body>
</html>

20151024这是编辑后的代码:

<!DOCTYPE html>

<html>
<head>
<title>Window Open Test 3</title>
<style>

#Image_01_Closed
{
position : absolute;
left : 16px;
top : 16px;
}
</style>
<script>
var URL_Set_Prefix = "file:///Users/simonwhelan/Desktop/WindowOpenTest3/";
var File_PathName = "";
var Window_01A_Closed_File_PathName = URL_Set_Prefix + "Window-01A-Closed";
var Window_01A_Open_File_PathName = URL_Set_Prefix + "Window-01A-Open" ;
var Window_01B_File_PathName = URL_Set_Prefix + "Window-01B-Open" ;
var Window_01B_HTML_File_PathName = URL_Set_Prefix + "Window-01B.html" ;
var Window_Open = false;
var Window_01B = null;

function turnAnImageOnOrOff (imageArrayIndexNbr,
id,
src)
{
if (Window_Open === true)
{ File_PathName = Window_01A_Closed_File_PathName; }
else { File_PathName = Window_01A_Open_File_PathName ; }

document.getElementById(id).src = File_PathName;
open_Or_Close_A_Window (imageArrayIndexNbr);
Window_Open = !Window_Open;
}

var current_Window_B_X_Position_Value = 8;
var current_Window_B_Y_Position_Value = 8;

function open_Or_Close_A_Window (imageArrayIndexNbr)
{
if (Window_Open === false)
{
Window_01B = window.open (Window_01B_HTML_File_PathName,
"_blank",
"top = " + current_Window_B_X_Position_Value + ", "
+ "left = " + current_Window_B_Y_Position_Value);
}
else { Window_01B.close(); };

File_PathName = URL_Set_Prefix
+ Window_01B_HTML_File_PathName;
}
</script>
</head>

<body>
<img
id = "Image_01_Closed"
src = "Window-01A-Closed"
alt = "Window A-01 - Closed"
onclick = "turnAnImageOnOrOff (0, id, src)"
width = "80"
height = "80"
>
</body>
</html>


<!DOCTYPE html>

<html>
<head>
<title>Window B-01 Open</title>
<style>
#Page_Background
{
position : absolute;
left : 8px;
top : 8px;
}
</style>

<script>
function WindowOnUnLoadTest ()
{
console.log("Entered WindowOnUnLoadTest");
return "Done with WindowOnUnLoadTest";
}
window.onbeforeunload=WindowOnUnLoadTest;
// window.onunload=WindowOnUnLoadTest;
</script>

</head>

<body>
<img
id = "Page_Background"
src = "Window-01B-Open"
alt = "Window B-01 Open : Page Background"
width = "80"
height = "80"
>
</body>
</html>

最佳答案

您没有看到警报的原因是浏览器不允许您在这些事件处理程序中弹出警报。但您仍然可以做一些事情。

如果您确实想要一个用于调试目的的对话框,您可以通过从 onbeforeunload 函数返回一个字符串来实现 - 您将得到一个显示文本的确认对话框。例如,试试这个:

<script>
function WindowOnUnLoadTest ()
{
console.log("Entered WindowOnUnLoadTest");
return "Done with WindowOnUnLoadTest";
}
window.onbeforeunload=WindowOnUnLoadTest;
</script>

(请注意,您实际上应该使用 window.addEventListener() 而不是分配给 window.onbeforeunload)

事实上,您的现有代码就已经足够了 - 您只需从 onbeforeunload 处理程序中调用父窗口中的函数,只要它们位于同一域中即可。

尝试向父脚本添加另一个函数:

function onChildClose() {
// here you can update your main page's state, change the image etc.
alert("[debug] child closed");
}

然后在子页面的 WindowOnUnLoadTest 函数中执行以下操作:

window.opener.onChildClose();

如果您的页面位于不同的域中,您可以轮询以检查窗口何时关闭,如this answer .

关于javascript - 有谁知道如何让 Javascript ‘onunload’ 函数工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33060371/

24 4 0
文章推荐: ios - 背景图片在 iPad 和 iPhone 上移动
文章推荐: Jquery 在 json 提要上查找替换文本
文章推荐: javascript - 我的
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com