我建立了一个使用一些简单JavaScript的网站。经过一些测试后,我发现我的JavaScript在iOS设备上的行为与我可以测试的所有其他设备的行为完全不同。
经过几个小时的反复试验后,我发现只有在严格的模式下才会出现意外行为,但是进一步解决这个问题非常困难,因为我的Apple /软件/硬件受限于Apple开发和测试
为什么我的代码不能在严格模式下工作,只能在某些(Apple,特别是Apple)设备上工作?
答案 0 :(得分:4)
您的问题可能是您已启用严格模式的const
声明。
如果是这种情况,并且您希望继续使用严格模式,则一种解决方案是使用var
而不是const
,并且只需更加小心地将变量视为常量。
事实上,没有OS X计算机很难调试此问题,因为您无法使用iOS Safari的远程控制台" Web Inspector"。
然而,according to caniuse,对于Safari和iOS Safari的当前版本(编写时分别为9.1和9.3)const
是:
仅在非严格模式下识别
您可以使用以下示例(or this JSFiddle)自行测试。这段代码在Ubuntu和Android上使用Chrome和Firefox时可以正常运行,但在Firefox for iOS或iOS Safari上却没有。
HTML
<pre></pre>
<form>
<input type="submit">
</form>
JS
"use strict";
var form = document.querySelector("form");
var info = document.querySelector("pre");
// This const declaration in conjunction with strict mode will
// cause this script not to work on iOS devices
const _MEANINGLESS = 0;
form.addEventListener("submit", function(event) {
event.preventDefault();
info.textContent = "Submit event captured.\n";
});