Safari 没有正确设置 JavaScript 变量
Safari doesn't set the JavaScript variable properly
我使用的是 Safari 12.0.3。我有:
function doThisOnlyOnce() {
if (MyNamespace.firstUserGesture) {
console.log('Do stuff only once!')
}
MyNamespace.firstUserGesture = false
}
function init() {
window.MyNamespace = {} // Easy access to some vars.
MyNamespace.firstUserGesture = true
MyNamespace.vid = document.getElementById("vid")
MyNamespace.vid.addEventListener('click', doThisOnlyOnce)
}
<body onload="init()">
<div id="vid">x</div>
</body>
问题
在 Safari 上,每次点击 doThisOnlyOnce()
是 运行。 MyNamespace.firstUserGesture
根本没有 设置为 false
。
在任何其他浏览器上 doThisOnlyOnce()
仅在首次点击时 运行,正如预期的那样。
我错过了什么?
使用 Safari JS 调试器逐行检查代码表明 doThisOnlyOnce
函数的语句之一抛出异常。删除异常原因,也删除了这个奇怪的行为。
我使用的是 Safari 12.0.3。我有:
function doThisOnlyOnce() {
if (MyNamespace.firstUserGesture) {
console.log('Do stuff only once!')
}
MyNamespace.firstUserGesture = false
}
function init() {
window.MyNamespace = {} // Easy access to some vars.
MyNamespace.firstUserGesture = true
MyNamespace.vid = document.getElementById("vid")
MyNamespace.vid.addEventListener('click', doThisOnlyOnce)
}
<body onload="init()">
<div id="vid">x</div>
</body>
问题
在 Safari 上,每次点击 doThisOnlyOnce()
是 运行。 MyNamespace.firstUserGesture
根本没有 设置为 false
。
在任何其他浏览器上 doThisOnlyOnce()
仅在首次点击时 运行,正如预期的那样。
我错过了什么?
使用 Safari JS 调试器逐行检查代码表明 doThisOnlyOnce
函数的语句之一抛出异常。删除异常原因,也删除了这个奇怪的行为。