0

簡単な JavaScript を使用する Web サイトを作成しました。いくつかのテストの後、iOS デバイスでの JavaScript の動作が、テスト可能な他のすべてのデバイスとは大きく異なることがわかりました。

数時間の試行錯誤の後、予期しない動作が厳密モードでのみ発生することを発見しましたが、Apple の開発およびテスト用のソフトウェア/ハードウェアが限られているため、問題をさらにトラブルシューティングすることは非常に困難でした.

コードが厳密モードでは機能せず、特定の (特に Apple) デバイスでのみ機能するのはなぜですか?

4

1 に答える 1

4

考えられる問題

問題はconst、strict モードを有効にして宣言を行ったことにある可能性があります。


可能な解決策

そのような場合で、厳密モードを引き続き使用したい場合は、var代わりにを使用constし、変数を定数として扱うように注意することが 1 つの解決策です。


この問題の詳細

iOS Safari のリモート コンソール「Web Inspector」を使用できないため、OS X コンピュータなしでこの問題をデバッグすることは実際には困難です。

ただし、caniuse によると、現在のバージョンの Safari と iOS Safari の両方 (執筆時点ではそれぞれ 9.1 と 9.3)constは次のとおりです。

厳密モードでない場合にのみ認識されます

次の例 (またはこの JSFiddle ) を使用して、これを自分でテストできます。このコードは、Ubuntu と Android の両方で Chrome と Firefox を使用すると期待どおりに機能しましたが、iOS 用の Firefox または 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 に答える