Dom 加载事件跨浏览器原生 javascript 代码
Posted
技术标签:
【中文标题】Dom 加载事件跨浏览器原生 javascript 代码【英文标题】:Dom loaded event cross borwser native javascript code 【发布时间】:2012-01-01 03:16:59 【问题描述】:我在没有 javascript 框架的情况下工作,但我想在加载 DOM 时调用一个函数。
我不能/不想在
标签上使用属性“onload”。【问题讨论】:
见***.com/questions/732801/… 【参考方案1】:我认为http://code.google.com/p/domready/ 正是您想要的。
如果您曾经编写自己的 JavaScript 文件,但不能依赖 现有的库,并且只想在之后执行 页面已加载,此库适合您。
只需这样做:
<html lang="en">
<head>
<script src="domready.js" type="application/javascript"></script>
<script type="application/javascript">
DomReady.ready(function()
alert('dom is ready');
);
</script>
</head>
<body>
</body>
</html>
【讨论】:
谢谢你听起来很完美,我会试试的,看起来像格雷厄姆的回答【参考方案2】:代码如下:
在非 IE 浏览器中,使用 DOMContentLoaded 事件 在 IE 顶部框架中使用滚动 hack(参见 _readyIEtop)在IE框架中,只需使用onload
var onready = function(handler)
// window is loaded already - just run the handler
if(document && document.readyState==="complete") return handler();
// non-IE: DOMContentLoaded event
if(window.addEventListener) window.addEventListener("DOMContentLoaded",handler,false);
// IE top frame: use scroll hack
else if(window.attachEvent && window==window.top) if(_readyQueue.push(handler)==1) _readyIEtop();
// IE frame: use onload
else if(window.attachEvent) window.attachEvent("onload",handler);
;
// IE stuff
var _readyQueue = [];
var _readyIEtop = function()
try
document.documentElement.doScroll("left");
var fn; while((fn=_readyQueue.shift())!=undefined) fn();
catch(err) setTimeout(_readyIEtop,50);
;
jQuery 对 IE 进行了更多调整(大量代码),但在我的测试中,它无论如何都会在 onload 事件之前运行。
var test = function() alert("ok");
onready(test);
【讨论】:
我不明白你为什么说我,如果这些都不起作用,你不确定你的答案,更多你说mae use onload????你有没有回答我的问题? 请原谅我的英语:“如果这些都不起作用”我的意思是“如果不是这样” - 请参阅我的代码中的 cmets。我在这里测试过 - jsfiddle.net/yCLZL【参考方案3】:好吧,恐怕跨浏览器和加载的 DOM 并不容易。推荐的是 Ryan Morr 的 ondomready (https://github.com/ryanmorr/ondomready),但有很多选择。
【讨论】:
谢谢,听起来很完美,我会试试以上是关于Dom 加载事件跨浏览器原生 javascript 代码的主要内容,如果未能解决你的问题,请参考以下文章