【发布时间】:2014-09-03 06:14:37
【问题描述】:
我正在编写一个带有画布的网站。该网站有一个脚本可以在每次刷新时成功运行,除了最后一行。当脚本结束时:
document.body.onresize = function() {viewport.resizeCanvas()}
“document.body.onresize”没有改变。 (我在 Chrome 的 javascript 控制台中仔细检查过:输入“document.body.onresize”会返回“undefined”。)
但是,当脚本结束时:
document.body.onresize = function() {viewport.resizeCanvas()}
console.log(document.body.onresize)
“document.body.onresize”确实改变了。该功能完全按照应有的方式工作。
我无法解释为什么这两个功能相同的代码会产生不同的结果。有人可以帮忙吗?
编辑:据我所知,“document.body”指的是正确的“document.body”。当我在分配document.body.onresize 之前调用console.log(document.body) 时,会打印正确的HTML。
编辑 2:一种解决方案(有点)
当我用“window”替换“document”时,每次调整窗口大小时都会调用视口的“resizeCanvas”函数。
为什么“window”有效,而“document”只有在你先调用“console.log”时才有效?一点头绪都没有。
【问题讨论】:
-
您的脚本是否与以括号开头的其他内容连接?始终使用分号。 (另外,
window.onresize不是更……常见吗?) -
不是,而是很好的建议。好消息是“window.onresize”实际上完全解决了这个问题:D 谢谢。但我仍然很好奇,这是我遇到过的最奇怪的错误之一
-
body.resize中有一个错字(缺少on)。也许你的实际代码也有这样的东西? -
document和document.body未调整大小。window已调整大小。所以,我想你想要的是window.onresize。 -
你的函数没有返回值,所以它应该返回
undefined。document.body.onresize的值是一个函数,document.body.onresize()的值是undefined,因为它不返回任何内容。另外,我认为@bergi 是在反驳您写.resize而不是.onresize的事实,而不是指document.body是否是有效的参考。
标签: javascript html events web