20

Javascript コードをスキャンして、すべてのブラウザーに存在しない可能性のある機能を見つけるためのツールはありますか?

私のライブラリは完全に非 UI であるため、何かがどのように「表示」されるかは気にしません。私が探しているのは、Mozilla の Javascript MDN のようなものです。たとえば、Array.prototype.indexOf については、最近の ECMAScript の追加であり、すべてのブラウザーに存在しない (通常はスタブを提供する) ことを警告しています。私が探しているのは、このカテゴリに分類されるコード内の関数をリストするツールです。

4

4 に答える 4

7

ESlint lintingユーティリティのプラグインであるeslint-plugin-compatを使用でき ます。Browserlistを使用して、サポートするブラウザーを構成することもできます。

eslint-plugin-compat に関する素敵なアニメーション

インストールは非常に簡単です。eslint とこのプラグインをインストールする必要があります。

npm install --save-dev eslint-plugin-compat

また

yarn add --dev eslint eslint-plugin-compat

そして、ESlint 構成ファイルを追加します。

// .eslintrc
{
  "extends": ["plugin:compat/recommended"]
}

package.jsonサポートされているブラウザーをファイルに追加します。

// sample configuration (package.json)
{
  // ...
  "browserslist": ["last 2 Chrome versions", "IE 11"],
}

次に、リンターを実行します。

eslint yourfile.js

私の場合、これは出力でした:

92:9   error  Promise.all() is not supported in IE 11  compat/compat
94:9   error  Promise.all() is not supported in IE 11  compat/compat
于 2019-03-01T10:02:21.907 に答える
3

アップデート:

この問題を解決するためのプラグインを示すStephan Vierkantの回答をご覧ください。


そのようなツールはなく、ブラウザはたくさんあります

「すべての」ブラウザとの互換性のためにコードをスキャンする別のアプローチがあると思いますが、これは本当に便利なことです。ほとんどの人は、ブラウザ間の互換性をある程度確保するために、次の 2 つのことを行います。

ライブラリを使用する

ブラウザの非互換性をラップするunderscore.jsjQueryDojoModernizrなどのライブラリを使用できます。たとえば、jQuery.inArray を使用できます。これは、jQuery がカバーするすべてのブラウザーで動作し、共通のインターフェイスを使用できます。

ブラウザのサポートを制限する

アプリケーションでサポートするブラウザーを決定し、これを Web サイトに記載してから、これらのブラウザーでテストします。それらを持っている場合はネイティブに、または持っていないブラウザーのテストを行うために browserstack のようなものを使用します。この回答には、これに対するより多くの代替案もリストされています。

最後に、コードを記述する際に頼るべきベスト プラクティスと個人的な経験があります。

于 2013-03-29T12:51:01.483 に答える