【问题标题】:Dynamic HTML plus window.onload won't work on IE动态 HTML 加 window.onload 在 IE 上不起作用
【发布时间】:2012-06-09 14:23:42
【问题描述】:

我对@9​​87654321@ 有一些困难,就像这样:

我正在使用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 文件。

我坚持这一点,任何帮助将不胜感激。

那么,有没有人知道我可能做错了什么?

【问题讨论】:

    标签: jquery dom dom-events onload


    【解决方案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 中搜索图像加载方法
    猜你喜欢
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多