问题标签 [document-ready]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
6732 浏览

jquery - JQuery:为什么不显眼的 JavaScript / Document Ready 函数而不是 OnClick 事件?

我刚刚开始研究 JQuery。目前我的 Web 应用程序中没有任何 AJAX。

我的 HTML 中现有的 JavaScript 如下所示:

这会显示 [添加] 和 [查找] 的按钮。对于 Find ,必须提交表单,我使用 MyFormSubmit() 验证数据,为页面添加视觉效果,然后 POST 数据。

我可以为 Find 按钮添加一个 CLASS 或 ID,在 JQuery 中我可以编写如下内容:

在我对 JQuery 的“新手”理解阶段,我不明白为什么我会这样做

我的旧方法识别对象附近的方法。在用户按下按钮之前可能存在 JS 尚未加载的风险(是否存在?JS 的 LOAD 就在页面顶部)。

在加载文档之前,不会激活 JQuery Document Ready 方法(我假设保证 JS 全部存在并准备好运行?),但它将代码移动到我的 HTML 文件的单独部分 - 所以当我在 HTML 源代码中看到了 MyButtonArray DIV,我不清楚哪些对象有方法,哪些没有。

你能帮我理解我的选择是什么以及我应该注意的好处/陷阱吗?

编辑:我很满意 DOM 操作 - 例如当单击任何具有“LightBoxThumb”类的缩略图时可以出现的灯箱 - 将使用不显眼的 Javascript。

但是,我正在努力说服自己,具有特定操作的按钮应该以这种方式应用其方法。(除了对“其他地方”的单个函数调用之外,我当然不会在按钮上放置任何代码,但在我看来,这是我关于该按钮功能的最佳线索,并且 Unobtrusive Javascript 层可能会使这更加困难来确定。)

Edit2 - 接受的答案

我已经接受了 Russ Cams 的回答。它以一种有助于我了解更多关于如何以及何时使用它的方式来描述 Unobtrusive Javascript。

目前(当我有更多经验时可能会改变!)我会坚持使用 OnClick 事件来对对象进行单个、不变的操作,因为我觉得这对我来说更容易调试 - 并在出现问题时进行诊断. 对于允许单击标题列进行排序的表格上的 ZebraStripes(以及该类型的情况),我可以看到 Unobtrusive Javascript 方法的好处

Russ 的最后评论特别有帮助,在此重复:

“@Kristen - 你是对的,就像很多编程主题一样,有不止一种方法,人们会强烈地坚持他们的信念!如果我们谈论一个按钮的单一方法,我完全理解你在哪里'来自...

如果我们谈论大量的 JavaScript,相同的函数调用多个元素,不同的函数调用不同的方法,等等。我认为自己混合内联和不显眼的方法会更困难,它会是最好采用一种或另一种方法”

0 投票
1 回答
9004 浏览

jquery - jQuery:$(document).ready() 在 IE 中太慢了

在呈现页面之前隐藏元素的首选方法是什么?$(document).ready() 对 firefox 工作得很好,但有时(连接到服务器似乎是一个主要问题)它在 Internet Explorer 中有点落后;该元素显示出来,并在病房后不久隐藏。即:在执行 $(document).ready() 中的代码之前呈现页面。

现在我一直在查看之前关于类似问题的关于 SO 的问题,但据报道这些问题已在 1.3.1 中得到解决。然而,我正在使用 jQuery 1.3.2 并遇到这种行为(在 IE6、IE7 和 IE8 中)。

一种可能的选择是默认情况下通过 css 隐藏它,但这会使显示它依赖于启用 javascript。我还不愿意这样做。

我还尝试将我的 javascript 移到 /body 标记上方,这似乎也无济于事。

0 投票
4 回答
2241 浏览

jquery - jQuery ready() 的四种变体——有什么区别?

我已经看到了四种不同的方法来告诉 jQuery 在文档准备好时执行一个函数。这些都是等价的吗?

0 投票
3 回答
880 浏览

javascript - 检查 DOM 的准备情况是否矫枉过正?

我正在开发一个使用 Web 技术开发桌面应用程序的平台。在此过程中,我一直在尝试让一些文档/就绪功能与我将集成到平台中的浏览器一起使用。这就是为什么我之前在 SO 上问过这个问题:javascript-framework-that-primarily-provides-just-document-onready-functionality

但是,我无法让我选择的浏览器(嘘,这是一个秘密;)成功利用该浏览器建议的功能,并且只能回答上述问题。所以,在试图弄清楚什么可能有效的过程中,我偶然发现了以下内容。

下面的代码在我正在使用的浏览器中具有相同的效果,只需在 1 毫秒超时后执行一个函数:我可以在加载大图像时写入 DOM。这对我来说可能不是最终的解决方案,我可能会写一些特定于这个浏览器的 Javascript 引擎如何实现 DOM 功能的东西。

尽管如此,我还是决定看看这是否适用于标准浏览器,令我惊讶的是,它确实有效!有鉴于此,我的问题是:各种 Javascript 框架提供的 dom/readiness 功能的各种实现,只是矫枉过正吗?

编辑/进一步的想法在我之前相关问题的答案所链接的页面上,它指出“对于 Firefox 和 Opera,事件类型的简单检查将确定它是否为 DOMContentLoaded。Safari 和 IE 将检查文档的就绪状态...... .最后,万一所有其他方法都失败了,onload 事件将出现在后面。” 也许类似于我上面的 setTimeout 的 setInterval 可能是倒数第二个行动方案,然后才将 onload 作为最后的手段?无论如何,使用我选择的可嵌入浏览器,似乎既不支持 DOMContentLoaded 事件,也不支持 document.readyState。

0 投票
7 回答
9480 浏览

javascript - 使用被谷歌认为是反模式的 DOMContentReady

Google Closure 库团队成员声称等待 DOMContentReady 事件是一种不好的做法。

简而言之,我们不想等待 DOMContentReady(或更糟糕的加载事件),因为它会导致糟糕的用户体验。在从网络加载所有 DOM 之前,UI 不会响应。所以首选的方法是尽快使用内联脚本。

由于他们仍然没有提供更多细节,所以我想知道他们如何处理 IE 中的Operation Aborted对话框。这个对话框是我知道等待 DOMContentReady(或加载)事件的唯一关键原因。

  1. 你知道还有其他原因吗?
  2. 您认为他们如何处理 IE 问题?
0 投票
6 回答
23447 浏览

jquery - jQuery:document ready 对我的要求来说太早了

我正在开发一个基于照片的网站。本网站的某些区域需要根据图像尺寸进行计算才能正常工作。我发现文档准备就绪太早了,结果我的 gui 行为不正常。

我删除了文档准备功能并将其替换为良好的 'ol window.onload 功能,因为如果我阅读正确,此功能在图像完全加载之前不会触发。

我的问题是,这会导致任何问题吗?还有其他我可能错过的解决方案吗?

谢谢你们的帮助!!

0 投票
2 回答
124 浏览

javascript - 加载 DOM 后立即在具有特定类的元素上运行函数,而不是使用事件处理程序

我有一个简单的函数,我想在某个类的所有元素上运行。我希望在加载 DOM 后立即运行此函数;不在事件处理程序上。

下面是将在诸如悬停之类的事件处理程序上运行的代码。如何在加载 DOM 后立即运行它?

displayname.alignSpans();不工作

0 投票
3 回答
86 浏览

javascript - jQuery 中有 NotReadyFunction 吗?

是否可以检查文档是否未准备好并在 jQuery 中定期执行函数?

只是我想实现类似的目标:

jQuery 中是否有内置函数来实现这样的功能?

0 投票
1 回答
964 浏览

jquery - JQuery Accordian:了解标题链接

我正在尝试学习 JQuery 并且在理解该过程时遇到了一些困难。我阅读了几篇文章,也许是我对 javascript 的理解不足是障碍,但我想学习。我的目标是将 Accordion UI 用于菜单系统;让主菜单项 (#sidebar ul.accordion li a .opener .selected ) 也可用作链接,而不仅仅是子菜单 (div.slide ul li a) 的“开启器”。我在下面列出了 HTML、CSS 和 JQuery 脚本,并认为我的问题如下:

问:我的问题是在 JQuery 'header: "opener"' 或 'event: "click"' 还是需要 'click(function(){ })' ?
任何帮助(教育)将不胜感激。

我有以下 HTML 菜单结构...

我有以下CSS ...

我有以下 jquery 脚本...

0 投票
1 回答
3489 浏览

jquery - Flash AS3 ExternalInterface 调用函数在 jQuery 文档中准备就绪

我只想从 Flash 中的一个按钮调用一个用 jQuery 编写的函数。
当我将函数放在 jQuery 的 $(document).ready 之外时,它工作正常:
*btw 我使用 SWFObject 嵌入 Flash。

AS3:

JS: