- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用揭示模块模式来实现 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/
嗨,这是我在这里的第一个问题,所以如果由于某种原因不遵守规则,结果是重复的或其他什么,请友好地告诉我(并不是说我首先会失去任何声誉) 无论如何,关于 Java 提供的此类 StringReader,我
我继承了这段代码,它似乎不是最优的,而且可能不正确,因为它在窗口和文档对象上添加了事件监听器。但是,除黑莓5.0外,它都可以正常工作。有人可以解释一下所有这些设置是否正确,或者是否有任何建议可以使其更
我被要求在第三方网站上执行维护,我可以编辑 JavaScript,但不能编辑后端代码。该站点使用一个插件,可以在 jQuery.ready 调用中设置各种样式和事件。我想停止它而不引起错误。我可以在模
在下面的代码片段中: Get Started! $(document).ready(function() { $('#indexGet
我有一个包含多个 html 文件的 phonegap 应用程序,对于每个 html 文件,我都有 js.file。在每个 js 文件中,我都添加了一个 eventListener,如下所示: func
您好,我正在尝试创建一个书签,它会打开一个网页,在该网页上找到一个下载链接,然后关闭该网页。除非有更好的方法,否则我将打开页面,调用 ready(我认为这是无效的部分),然后搜索下载链接。导入jQue
关于我的问题:Validate dynamically added control 我们是否应该始终在 javascript 上使用 ready 函数? 最佳答案 一个人应该只有在保证这样的操作有效并
以下两种情况给我相同的行为。但是技术上有什么区别? (我把下面的代码放在正文中脚本标签的最后一部分。) $(document).ready(function() { $('.collapse').
我的程序使用共享内存作为数据存储。此数据必须可供任何正在运行的应用程序使用,并且必须快速获取此数据。但是一些应用程序可以运行在不同的 NUMA 节点上,并且它们的数据访问非常昂贵。每个 NUMA 节点
我有一个 控制台 .net 核心中的应用程序。 如何实现 Kubernetes 就绪/活跃度探测? 我的应用程序循环处理rabbitmq 消息,并且不监听任何http 端口。 最佳答案 对于这种情况,
在嵌入式系统上使用ALSA捕获时,我仍然遇到问题。 使用snddevices脚本后,我现在可以从库中打开设备。但是在每次调用大约10秒钟后,应用程序在Input/output error调用上返回错误
我想知道如何在 Facebook 应用程序的 FBJS 中使用 $(document).ready 或类似的东西。我尝试了 $(document).ready 但它不起作用。我也找不到任何相关文件..
我在 $('document').ready 中定义了一个函数。 $('document').ready(function() { function visit(url) { $.ajax
下面是一个简单的测试用例来演示我正在尝试做的事情: Test $(document).ready(function() { $(":target").css('color', 'r
使用 ember cli v0.1.4、ember 1.8.1 和 cordova 3.7,我正在使用初始化程序等待设备准备就绪; var CordovaInitializer = { name:
我正在研究 jQuery 最佳实践并找到了 this文章 by Greg Franko 通常,我会: $("document").ready(function() { // The DOM i
这个问题已经有答案了: What is the scope of variables in JavaScript? (27 个回答) 已关闭 5 年前。 我想在 $(document).ready(x
我成功地使用 gce ingress 使用 GKE 创建了一个集群。但是 Ingress 需要很长时间才能检测到服务是否就绪(我已经设置了 livenessProbe 和 readinessProbe
我不确定我在这里问的问题是否正确,但基本上我是用ajax请求插入html: // data-active_chart if ($("#charts").attr("data-active_chart"
我正在使用 Foundation CSS 框架,它在页脚中加载 jQuery。这不是非典型做法,也是许多人推荐的做法。但是,我需要在页面中编写脚本。使用 document ready 应该可以解决问题
我是一名优秀的程序员,十分优秀!