javascript - Safari 没有正确设置 JavaScript 变量
问题描述
我在 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>
问题
在 SafaridoThisOnlyOnce()
上,每次点击都会运行。MyNamespace.firstUserGesture
根本没有设置为false
。
正如预期的那样,在任何其他浏览器doThisOnlyOnce()
上仅在第一次单击时运行。
我错过了什么?
解决方案
使用 Safari JS 调试器逐行检查代码表明doThisOnlyOnce
函数语句之一引发了异常。消除异常原因,也消除了这种奇怪的行为。
推荐阅读
- c# - 使用抽象类的通用函数
- c# - 使用 IdentityServer 保护 API
- amazon-cognito - 回调 Lambda 有时会收到 {'code': '', 'state': 'my-correct-state'}
- python - 如何在 url 字符串中传递列表中的值
- sql-server - 配置文件中的 SQL Server 数据库端口参数
- javascript - 如何使用 javascript 检查服务器状态
- ios - iOS 10 及更早版本上的 iOS 堆栈视图问题
- wordpress - 计算单个用户的点击次数 // Wordpress
- xml - 删除命名空间并替换为另一个命名空间
- c# - C# DataTable to Json(自定义格式)