如何在页面关闭或刷新时触发javascript事件

如何在页面关闭或刷新时触发javascript事件,第1张

一个判断页面是否真的关闭和刷新的好方法:

window.onbeforeunload=function (){

alert("===onbeforeunload===")

if(event.clientX>document.body.clientWidth &&event.clientY <0 || event.altKey){

alert("你关闭了浏览器")

}else{

alert("你正在刷新页面")

}

}

这段代码就是判断触发onbeforeunload事件时,鼠标是否点击了关闭按钮,或者按了ALT+F4来关闭网页,如果是,则认为系统是关闭网页,否则在认为系统是刷新网页。

onbeforeunload与onunload事件

Onunload,onbeforeunload

都是在刷新或关闭时调用,可以在<script>脚本中通过window.onunload

来指定或者在<body>里指定。区别在于onbeforeunload在onunload之前执行,它还可以阻止onunload的执行。

Onbeforeunload

也是在页面刷新或关闭时调用,Onbeforeunload是正要去服务器读取新的页面时调用,此时还没开始读取;而onunload则已经从服务器上读

到了需要加载的新的页面,在即将替换掉当前页面时调用。Onunload是无法阻止页面的更新和关闭的。而Onbeforeunload 可以做到。

页面加载时只执行onload

页面关闭时先执行onbeforeunload,最后onunload

页面刷新时先执行onbeforeunload,然后onunload,最后onload。

1、onbeforeunload事件:

说明:目前三大主流浏览器中firefox和IE都支持onbeforeunload事件,opera尚未支持。

用法:

·object.onbeforeunload = handler

·<element onbeforeunload = “handler” … ></element>

描述:

事件触发的时候d出一个有确定和取消的对话框,确定则离开页面,取消则继续待在本页。handler可以设一个返回值作为该对话框的显示文本。

触发于:

·关闭浏览器窗口

·通过地址栏或收藏夹前往其他页面的时候

·点击返回,前进,刷新,主页其中一个的时候

·点击 一个前往其他页面的url连接的时候

·

调用以下任意一个事件的时候:click,document write,document open,document close,window

close ,window navigate ,window NavigateAndFind,location replace,location

reload,form submit.

·当用window open打开一个页面,并把本页的window的名字传给要打开的页面的时候。

·重新赋予location.href的值的时候。

·通过input type=”submit”按钮提交一个具有指定action的表单的时候。

可以用在以下元素:

·BODY, FRAMESET, window

平台支持:

IE4+/Win, Mozilla 1.7a+, Netscape 7.2+, Firefox0.9+

示例:

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/htmlcharset=gb2312" />

<title>onbeforeunload测试</title>

<script>

function checkLeave(){

event.returnValue="确定离开当前页面吗?"

}

</script>

</head>

<body onbeforeunload="checkLeave()">

</body>

</html>

2、onunload事件

用法:

·object.onbeforeunload = handler

·<element onbeforeunload = "handler"></element>

描述:

当用户关闭一个页面时触发onunload 事件。

触发于:

·关闭浏览器窗口

·通过地址栏或收藏夹前往其他页面的时候

·点击返回,前进,刷新,主页其中一个的时候

·点击 一个前往其他页面的url连接的时候

·

调用以下任意一个事件的时候:click,document write,document open,document close,window

close ,window navigate ,window NavigateAndFind,location replace,location

reload,form submit.

·当用window open打开一个页面,并把本页的window的名字传给要打开的页面的时候。

·重新赋予location.href的值的时候。

·通过input type=”submit”按钮提交一个具有指定action的表单的时候。

示例:

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/htmlcharset=gb2312" />

<title>onunload测试</title>

<script>

function checkLeave(){

alert("欢迎下次再来!")

}

</script>

</head>

<body onunload="checkLeave()">

</body>

</html>

APPLICATION 就是应用程序的意思。

TApplication类是用于描述Delphi编制的应用程序的一个类。通过对这个类的灵活应用可以编制许多有特点的程序。下面我们就举几个这方面的例子。

1 检测当前Windows程序是否被激活:

Tapplication类有一个属性——Active,这个属性就可以描述当前运行的程序是否被激活,成为Windows的焦点。检测的代码如下:

If Application.Active=False then

ShowMessage('当前窗口没有被激活');

2 取得当前程序的名称:

Tapplication类的EXEName属性可以返回这个可执行程序的完整文件名(包含路径)。实现的代码如下所示:

ShowMessage(Application.ExeName)

3 改变程序极小化时的标题

如果您细心观察可以发现,一些程序的标题和程序的名称并不一致,尤其是一些英文程序,窗体的标题栏比较长,可以容纳比较多的文字,而在最小化时,往往变成了很少的几个字母。这中间起作用的就是Tapplication类的Title属性。这个属性决定了程序最小化时的标题,而窗口中标题栏的标题是由Form的Caption属性来决定的。其代码如下:

Form1.Caption:='窗口的标题'

Application.Title:='程序的标题'

其实我们也可以在在程序设计时指定Tapplication类的Title属性值。 *** 作的方法是在开发环境中拉下Project菜单选择Options菜单时d出如图1 (略)的对话框。在这个对话框中的Title栏中填写程序的标题一样也可以达到这种效果。并且因为一般的工程文件都是以英文命名的,所以程序运行过程中d出的消息框中的标题是英文。但在指定了这个属性之后,这个程序的所有消息窗口的标题都变为Title的值。这就使得程序看起来更加完整。

4 指明程序的主窗口

Windows系统中的界面都是窗口,但一般来讲有一个主窗口。Tapplication的MainForm属性就可以返回程序的主窗口。

5 显示消息框

Delphi有许多显示消息框的函数与过程,比较常用的是ShowMessage,它用起来虽然十分方便,但是却有一个问题,那就是这个消息框的按钮是以英文显示的。如果要生成一个含有中文显示的按钮就要求助于Tapplication的MessageBox函数了。这个函数的原形如下:

function MessageBox(Text, Caption: CharFlags: Longint): Integer

在这个函数中,前两项分别是显示的提示信息和消息窗口的标题,Flags是一个长整值,用来指定按钮的个数及功能。熟悉Delphi的用户可能会注意到,这个函数和Delphi 3所提供的同名函数有一点不同,那不是这个版本中字符串参数都以字符的形式给出,而不再要求将其转化成指针。我们在使用时要注意加以区别。

Application.MessageBox('需要存盘吗?', '提示信息', MB_OKCANCEL); 这个语句在运行时显示的样式如图2 (略) 所示。

最后就这个函数的返回值作一些说明,实际上这个函数返回的是一个整型的数值,而这个数值被系统指定了具体的含义,比如:按下“确定”按钮时返回的值是“1”,而其它按钮的值列在表 1 中。

表 1 按钮的意义及系统中对其定义的值

按钮的意义 按下此按钮时函数返回的值 IDABORT 3 IDCANCEL 2 IDIGNORE 5 IDNO 7 IDOK 1 IDRETRY 4 IDYES 6

6 控制窗口的尺寸

一般可以用窗口手柄来调整窗口的尺寸,但是也可以用Application的事件来调整。实现的方法是用以下两个过程:

Application.Minimized

Application.Restore

前一个过程用来将程序的主窗口最小化,而后一个过程用来将最小化的窗口恢复到原来的尺寸。

7 链接联机帮助文件

Application的CurrentHelpFile属性能够指定当前程序所用的联机帮助文件的文件名。这个属性经常与另一个方法联合在一起使用。举例如下:

Application.HelpFile := '联机帮助文件名'

Application.HelpJump('联机帮助文件的主题’)

通过这一命令组合,我们就能使系统d出一个显示某主题的联机帮助文件。

8 在程序运行时动态地创建窗口

一般情况下,窗口是在设计时加入到工程项目中的,但是有时也需要我们在程序运行时动态地加入窗口,这就要用到Application 的CreateForm过程,举例如下:

Form3:Tform3//声明窗口类

Application.CreateForm(TForm3, Form3)//创建窗口

9 结束程序

虽然我们可以用关闭主窗口的方法来关闭一个程序,但是更好的办法是用Application的Terminate过程。它能够起到更彻底地关闭程序的效果。

10 Destroy 属性.

虽然Delphi提供了这一属性,但是并不提倡使用它,如果要终结程序就要调用Terminate过程,而Destroy过程一般是用来在程序发生悬挂时来退出程序时才调用,有些类似Windows中的结束任务功能。它不仅能关闭程序实例本身,而且还能释放程序所占用的资源,能够达到将程序彻底清除出系统的目的。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/7006773.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-31
下一篇 2023-03-31

发表评论

登录后才能评论

评论列表(0条)

保存