0

我已经建立了一个使用一些简单 JavaScript 的网站。经过一些测试,我发现我的 JavaScript 在 iOS 设备上的行为与我可以测试的所有其他设备相比非常不同。

经过几个小时的反复试验,我发现只有在严格模式下才会出现意外行为,但是由于我对 Apple 开发和测试的软件/硬件有限,因此很难进一步解决问题。

为什么我的代码不能在严格模式下工作,并且只能在某些(特别是 Apple)设备下工作?

4

1 回答 1

4

可能的问题

您的问题可能是您已const启用严格模式的声明。


一个可能的解决方案

如果是这种情况,并且您想继续使用严格模式,一种解决方案是使用var而不是const,并且更小心地将变量视为常量。


更多关于这个问题

实际上,如果没有 OS X 计算机,很难调试此问题,因为您无法使用 iOS Safari 的远程控制台“Web Inspector”。

但是,根据 caniuse的说法,对于 Safari 和 iOS Safari 的当前版本(截至撰写时分别为 9.1 和 9.3)const是:

仅在非严格模式下识别

您可以使用以下示例(或此 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";
});
于 2016-05-14T16:05:44.320 回答