|zyciis| 如何在网页显示完成后执行一段JS 注不是加载完成

zyciis703 2008-02-19 11:06:15
如以下源码:

<html>
<hand>
<script>
function MessageBox()
{
alert("网页显示完成")
}
</script>
</hand>
<body>
... //这里是网页的内容
...
//当网页从上读到最后时显示JS
<script>
MessageBox();
</script>
</body>

现在要把这一段JS改为这种效果,但功能一样

<html>
<hand>
<script scr ="Jscript.js" />
</hand>
<body>
... //这里是网页的内容
...
</body>

//以是是Jscript.js

function MessageBox()
{
alert("网页显示完成")
}
//难就难在这里如何在他显示完网页后执行这一条代码
window.???=MessageBox;


谢谢
...全文
675 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
说明点,该属性支持多浏览器
  • 打赏
  • 举报
回复
<script src="../cgi-bin/delscript.js" defer></script>
中的defer作用是文档加载完毕了再执行脚本,这样避免找不到对象的问题---有点问题




<button id="myButton" onclick="alert('ok')">test</button>
<script>
myButton.click();
</script>

<script>
myButton.click();
</script>
<button id="myButton" onclick="alert('ok')">test</button>

<script defer>
function document.body.onload() {
alert(document.body.offsetHeight);
}
</script>
加上 defer 等于在页面完全在入后再执行,相当于 window.onload ,但应用上比 window.onload 更灵活!

defer是脚本程序强大功能中的一个“无名英雄”。它告诉浏览器Script段包含了无需立即执行的代码,并且,与SRC属性联合使用,它还可以使这些脚本在后台被下载,前台的内容则正常显示给用户。
--但是 文档加载完毕了再执行脚本

最后请注意两点:
1、不要在defer型的脚本程序段中调用document.write命令,因为document.write将产生直接输出效果。
2、而且,不要在defer型脚本程序段中包括任何立即执行脚本要使用的全局变量或者函数。

一个常用的优化性能的方法是:当脚本不需要立即运行时,在<SCRIPT>标签中设置“defer”属性。 (立即脚本没有被包含在一个function块中,因此会在加载过程中执行。) 设置“defer”属性后,IE就不必等待该脚本装载和执行完毕。这样页面加载会更快。一般来说,这也表明立即脚本最好放在function块中,并在 document或者body对象的onload 句柄中处理该函数。在有一些脚本需要依赖用户操作而执行时----例如点击按钮,或者移动鼠标到某个区域----使用该属性非常有用。但当有一些脚本需要在页面加载过程中或加载完成后执行,使用defer属性得到的好处就不太大


Script中的Defer属性
如果你是一个对系统性能比较关心和在意的人,我想你应该会对Script脚本中的defer属性感兴趣的。
script中的defer属性默认情况下是false的。按照DHTML编程宝典中的描述,对于Defer属性是这样写的:
Using the attribute at design time can improve the download performance of a page because the browser does not need to parse and execute the script and can continue downloading and parsing the page instead.
也就是说:如果是编写脚本的时候加入defer属性,那么浏览器在下载脚本的时候就不必立即对其进行处理,而是继续对页面进行下载和解析,这样会提高下载的性能。
这样的情况有很多种。比如你定义了很多javascript变量,或者在引用文件(.inc)中写了很多的脚本需要处理,那不妨在这些脚本中加入defer属性,对性能的提高肯定有所帮助。
举例如下:
<script language="javascript" defer>
var object = new Object();
....
</script>
因为defer属性默认是为false的,那么在这里<script language="javascript" defer>显式声明defer属性后等同于<script language="javascript" defer=true>
声明了defer属性之后,需要判断是否有别的变量引用了defer脚本块中的变量,否则的话会导致脚本错误的产生
  • 打赏
  • 举报
回复
哈哈,你分数很多啊!一问都是大分的
问题都解决了吧?
xiaojing7 2008-02-19
  • 打赏
  • 举报
回复
<script scr ="Jscript.js" defer="defer"/>,
ls的意见不错.

zyciis703 2008-02-19
  • 打赏
  • 举报
回复
RE:
1:setTimeOut 不考虑
2:window.onload 肯定不行
3:<script scr ="Jscript.js"> </script> 放到网页后面 //不美观
4:script标签加上 defer属性 //火孤可以吗
tantaiyizu 2008-02-19
  • 打赏
  • 举报
回复
1.<script scr ="Jscript.js"></script>
放到网页后面
2.script标签加上 defer属性
lsc1202001 2008-02-19
  • 打赏
  • 举报
回复
不用window.onload script标签里加"defer"也可以 IE支持
lsc1202001 2008-02-19
  • 打赏
  • 举报
回复
window.onload
xiaojing7 2008-02-19
  • 打赏
  • 举报
回复
setTimeout(MessageBox(),3000)
xiaojing7 2008-02-19
  • 打赏
  • 举报
回复
setTimeout()

61,112

社区成员

发帖
与我相关
我的任务
社区描述
层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。
社区管理员
  • HTML(CSS)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧