动态 HTML 加 window.onload 在 IE 上不起作用
Posted
技术标签:
【中文标题】动态 HTML 加 window.onload 在 IE 上不起作用【英文标题】:Dynamic HTML plus window.onload won't work on IE 【发布时间】:2012-06-09 14:23:42 【问题描述】:我对@987654321@ 有一些困难,就像这样:
我正在使用jquery.magiclick.js
填充div 的innerhtml,并通过AJAX 调用获取具有一些img 定义的xml。函数调用这个magiclick
函数驻留在document.ready像这样:
$().ready(function ()
loginBanner();
);
我在另一个 js 中定义了一个window.onload
函数。这不是必需的,但我将包含代码以使自己更清楚。如果之前定义了一个函数,它会简单地调用window.onload
函数,然后将该函数作为参数传递。就是这样:
function addLoadEvent(func)
var oldonload = window.onload;
if (typeof window.onload != 'function')
window.document.body.onload = function()
alert("onLoad-1");
func();
;
else
window.document.body.onload = function()
alert("onLoad-1");
if (oldonload)
oldonload();
func();
;
我在页面底部用函数参数调用这个函数。
我的期望是它会在文档准备好后获取 img 定义,并且由于定义包含 img 引用,它会获取图像数据然后执行我的onload
函数。它在 Firefox 上运行良好,但在 IE 上不行。
在 IE 中,它调用了获取 xml 的 magiclick
函数,然后调用了我的 onload
函数,但在执行 onload
函数时,尚未获取 xml 文件。
我坚持这一点,任何帮助将不胜感激。
那么,有没有人知道我可能做错了什么?
【问题讨论】:
【参考方案1】:AJAX 是异步的,无需完成即可触发窗口加载
在 ajax 成功回调中调用您的代码
以jQuery AJAX简写方法$.get()为例:
$.get( url, function(data)
/* AJAX success, run code here */
)
【讨论】:
我实际上是在回调中调用一个函数来填充 div 的 innerHTML。我在其中插入了一些 img 标签,所以它应该获取图像数据。你是说因为 ajax 是异步的,所以我的 img 定义也是异步的,这会导致 window.onload 在图像到达之前触发。我对吗?这就是我插入 img 标签的方式: $('').html('');我可以为这些图像定义一个 onload 函数吗? 是的,解释是正确的。 onload 只知道源 html 中存在的图像标签。请在 SO 或 google 中搜索图像加载方法以上是关于动态 HTML 加 window.onload 在 IE 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章
在html中使用window.onload和onload的区别