gpt4 book ai didi

javascript - 显示模块模式和文档就绪

转载 作者:行者123 更新时间:2023-11-28 09:05:21 25 4
gpt4 key购买 nike

我正在尝试使用揭示模块模式来实现 Canvas 游戏。因此,我必须获取 Canvas DOM 元素及其上下文。这意味着在 DOM 完全加载之前不应执行该函数。由于我使用的是 jQuery,因此我打算将所有内容都放入 document.ready() 中,但这会扰乱范围。正如您从这个示例中看到的:

var game = function ()
{
var canvas = document.getElementById("canvas");

var init = function ()
{
}

return
{
init: init
}
}();

该函数必须自动执行才能正常返回。然而,由于它引用了 Canvas ,我不希望它立即加载。将自执行函数放入 document.ready() 中会阻止我执行

game.init();

我应该做什么?

最佳答案

如果您需要确保在特定的 javascript 运行之前加载 DOM 元素,只需将 javascript 放在页面上该特定 DOM 元素之后即可:

<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<script src="~/Scripts/jquery-1.9.1.js"></script>
<script>
$(function () {
game.init();
});
</script>
</head>
<body>
<div>
<canvas id="canvas"></canvas>
</div>
<script>
var game = function () {
var canvas = document.getElementById("canvas");
var init = function () {
alert(canvas.id);
};
return {
init: init
}
}();
</script>
</body>
</html>

页面是从上到下解析的,因此在 javascript 代码执行之前,canvas 元素将被加载到 DOM 中。

将 JavaScript 放在页面底部、结束正文标记之前的另一个好处是,这可以缩短页面的感知加载时间。例如,如果页面的 head 部分有复杂的 javascript,则必须先加载并解析此 javascript,然后才能呈现正文部分中的任何 HTML 元素,因为页面是从上到下执行的。如果 JavaScript 很复杂,则页面加载速度可能会很慢。通过将其放在底部,您的 HTML 会被渲染,然后您的 javascript 会被加载和解析,这可以使页面的可视部分更快地显示。 See here了解更多信息。

关于javascript - 显示模块模式和文档就绪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17201696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com