Internet Explorer 中的 JavaScript : How to do something after a variable is loaded/registered

标签 javascript jquery internet-explorer document-ready

我正在使用一些 jQuery,它在除 Internet Explorer 8 之外的所有浏览器中都能正常工作(可能不是早期版本,尽管我并不担心这些)。我使用 jQuery 的 .each 函数来循环 JavaScript 数组中的每个元素,该数组是由我使用的相当不灵活的 CMS 在我的页面上自动生成的。

例如,我的 CMS 将 JavaScript 中的图像对象数组写入我的页面:

paths = [];
paths[0] = new Image();
paths[0].src = "/path/to/image1"
paths[1] = new Image();
paths[1].src = "/path/to/image2"
paths[2] = new Image();
paths[2].src = "/path/to/image3"
paths[3] = new Image();
paths[3].src = "/path/to/image4"

然后,我使用 jQuery every 函数循环遍历该数组,并在一个漂亮的小无序列表中返回所有图像。

问题是在使用 jquery 时

$(document).ready(function() { ... });

在 FF/Safari/Chrome 等中工作正常,实际上能够立即渲染我的无序列表,Internet Explorer 似乎在注册 JavaScript 中存在“路径”数组之前运行我的 document.ready 函数(甚至尽管这个 jQuery 包含在图像数组的代码之后)。我知道这一点是因为我在 IE 中抛出了“路径为空/未定义”错误。

当我改变它时

$(document).ready(function() {

$(window).load(function() {

我的代码在 IE 中正常工作,因为它仅在加载整个页面后执行我的 jquery 'each' 函数(这很糟糕,因为它会减慢渲染时间并导致我正在尝试执行的操作出现“滞后” ...但是嘿,如果它有效的话)。然而,如果网站已被缓存,IE 有时在使用 $(window).load 注册名为“paths”的数组存在之前仍然会触发我的每个函数。

有人知道一种可靠的方法来确保 IE 立即注册 paths 变量,这样我的每个函数都不会失败吗?

最佳答案

这是

$(document).ready(..)

不是

$('document').ready(..)

关于Internet Explorer 中的 JavaScript : How to do something after a variable is loaded/registered,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3901561/

相关文章:

jquery - 如果在 jquery 中单击该行中的复选框,如何获取该行的值

php - 恢复多个输入数据

javascript - 从背景淡入到另一个背景

javascript - 我怎样才能改变 IE 中选择标签的这种行为

html - 在 ie7 中右对齐内联 block 元素

php - 验证码问题

javascript - 尝试获取 IP 并删除句点以在页面上的其他位置使用 int

javascript - 在 DOM 元素上调用自定义方法

css - 在 Internet Explorer 9 中使用 CSS 对齐 Div 列表中的文本

javascript - 如何在 Textmate 中创建自定义符号列表项?