我建立了一个使用一些简单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/

10-14 20:17