我建立了一个使用一些简单JavaScript的网站。经过一些测试,我发现我的JavaScript在iOS设备上的表现与我可以测试的所有其他设备相比有很大不同。
经过数小时的反复试验,我发现意外的行为仅在严格模式下发生,但是很难进一步解决问题,因为我的软件/硬件仅限于Apple开发和测试。
为什么我的代码不能在严格模式下运行,而只能在某些设备(尤其是Apple)上运行?
最佳答案
可能的问题
您的问题可能是您在启用严格模式的情况下进行了const
声明。
可能的解决方案
如果是这样,并且您想继续使用严格模式,则一种解决方案是使用var
而不是const
,并且只需更加小心地将变量视为常量即可。
有关此问题的更多信息
实际上,如果没有OS X计算机,则很难调试此问题,因为您无法使用iOS Safari的远程控制台“ Web Inspector”。
但是,对于Safari和iOS Safari的当前版本(在撰写本文时分别为9.1和9.3),according to caniuse为:
仅在非严格模式下才能识别
您可以使用以下示例(or this JSFiddle)自己进行测试。对于Ubuntu和Android上的Chrome和Firefox,此代码可以正常工作,但对于iOS或iOS Safari的Firefox无法运行。
的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";
});
关于javascript - 为什么我的JavaScript在Safari上的严格模式下无法正常工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37228892/