原代码没有错误。
如果在原代码第7行的末尾加上括号,虽然能看到对话框,但会在页面一开始就弹出。这是因为函数被显式调用。
保持原代码不变,在IE中测试,当只有一个选项卡时关闭页面时没有反应;但当浏览器中还存在其它选项卡时,就能够成功看到预期结果。
源码中的语法表示为window.onunload属性赋值为函数名,可以理解为指针,是合理的用法,不需要在末尾加上括号。
除此之外,还可以通过为<body>标签添加onunload = "onunload_message()";属性来实现这件事,相关资料中很容易查证,我没有测试过。