一般的なブラウザ互換性の問題(概要)

一般的なブラウザ互換性の問題(概要)

ブラウザの互換性とは、スタイルの互換性 (CSS)、インタラクションの互換性 (JavaScript)、およびブラウザ ハックに他なりません。

スタイルの互換性 (css)

(1) 歴史的な理由により、ブラウザによってスタイルが異なります。Normalize.css を使用して違いを解消したり、ワイルドカードセレクタを使用してスタイルをグローバルにリセットするなど、独自の reset.css をカスタマイズしたりできます。

* { マージン: 0; パディング: 0; }

(2)CSS3が真の標準になる前に、ブラウザメーカーはこれらのプロパティの使用をサポートし始めました。 CSS3 スタイルの構文がまだ不安定だった頃、ブラウザの製造元はブラウザ プレフィックスを提供していましたが、現在でも一部のプロパティはブラウザ プレフィックスを使用して追加する必要があります。開発プロセスでは、通常、IDE 開発プラグイン、CSS プリプロセッサ、フロントエンドの自動ビルド プロジェクトを使用します。

ブラウザカーネルとプレフィックスの対応は次のとおりです。

主に代表されるブラウザカーネルプレフィックス
インターネットエクスプローラートライデント-MS
ファイアフォックスヤモリ-モズ
オペラプレスト-o
ChromeとSafariウェブキット-ウェブキット

相互運用性 (javascript)

(1)イベントの互換性の問題:通常、イベントハンドルのバインディング、削除、バブル防止、およびデフォルトのイベント動作処理をフィルタリングするためのアダプタメソッドをカプセル化する必要がある。

 var ヘルパー = {}

 // イベントのバインド helper.on = function(target, type, handler) {
 	ターゲットにイベントリスナーを追加します
 		target.addEventListener(タイプ、ハンドラー、false);
 	} それ以外 {
 		target.attachEvent("on" + タイプ,
 			関数(イベント) {
 				handler.call(target, event) を返します。
 		    }、 間違い);
 	}
 };

 //イベントリスニングをキャンセル helper.remove = function(target, type, handler) {
 	ターゲットイベントリスナーを削除する場合
 		target.removeEventListener(タイプ、ハンドラー);
 	} それ以外 {
 		target.detachEvent("on" + タイプ,
 	    関数(イベント) {
 			handler.call(target, event) を返します。
 		}、 真実);
     }
 };

(2)new Date()コンストラクタを使用する場合、各種ブラウザでnew Date(str)を使用して「2019-12-09」を正しく生成することができません。 正しい使い方は「2019/12/09」です。

(3)Chrome以外のブラウザと互換性のあるdocument.documentElement.scrollTopを介してscrollTopを取得する

var scrollTop = document.documentElement.scrollTop||document.body.scrollTop;

ブラウザハック

(1)IEブラウザのバージョンを素早く確認する

<!--[IE 8の場合]> ie8 <![endif]-->
 
 <!--[if IE 9]> クールな IE9 ブラウザ<![endif]-->

(2)Safariブラウザかどうか確認する

/* サファリ */
 var isSafari = /a/.__proto__=='//';

(3)Chromeブラウザかどうか確認する

/* クローム */
 var isChrome = Boolean(window.chrome);

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

<<:  jsを呼び出すいくつかの方法が整理され、使用が推奨されています

>>:  JavaScript のガベージコレクションの仕組みの詳細な説明

推薦する

ホストサービスにアクセスするDockerでのサービスの実装

目次1. シナリオ2. 解決策3. 結論4. 参考文献1. シナリオ日常の開発およびテスト作業には ...

MySQL の準同期レプリケーションについての簡単な説明

導入MySQL はレプリケーションを通じてストレージ システムの高可用性を実現します。現在、MySQ...

grpc のリバース プロキシとして nginx を使用する場合の落とし穴の概要

背景ご存知のとおり、nginx は高性能な Web サーバーであり、負荷分散やリバース プロキシによ...

Vue ElementUI で Excel ファイルを手動でサーバーにアップロードする方法の詳細な説明

目次概要プロパティ設定処理ロジック概要具体的な需要シナリオは次のとおりです。 Excel ファイルを...

一般的な Linux ツール vi/vim の完全版

なぜvimを学ぶのかLinuxには多数の設定ファイルがあるため、Linuxには多くのテキスト処理ツー...

MySQLでTEXT/BLOB型を使用する際の注意点を詳しく説明します

1. TEXTとBLOBの違いTEXT ファミリと BLOB ファミリの唯一の違いは、BLOB 型は...

Linux ソースコードからのソケット (TCP) クライアント側での接続の例の詳細な説明

序文著者は、アプリケーションからフレームワーク、オペレーティング システムに至るまで、あらゆるコード...

リモート接続を許可するようにMySQLを変更する方法

MySQLリモート接続の問題に関しては、会社で働いているときに誰かのコンピュータに保存されているMy...

MySQLの構文、特殊記号、正規表現の詳細な説明

Mysql でよく使用される表示コマンド1. 現在のデータベース サーバー内のデータベースの一覧を表...

MySQL の列から行への変換のヒント (共有)

序文:多くのビジネス テーブルでは、歴史的またはパフォーマンス上の理由により、最初のパラダイムに違反...

Vue コンポーネントはどのように解析され、レンダリングされるのでしょうか?

序文この記事では、Vue コンポーネントがどのように解析され、レンダリングされるかを説明します。 V...

Vue Element フロントエンドアプリケーション開発のための従来の JS 処理機能

目次1. 従来のコレクションに対するフィルター、マップ、および削減処理方法2. 再帰処理3. for...

Linux環境でタイムゾーンを設定できない問題を解決

Linuxでタイムゾーンを変更する場合、常に変更することはできませんAsia/Shanghai に変...

MySQLデータベースが予期せずクラッシュし、テーブルデータファイルが破損して起動できなくなる問題を解決します。

問題: MySQL データベースが予期せずクラッシュしたため、データベースを起動できませんでした。エ...

ネイティブ JavaScript でショッピングカートを実装する

この記事では、ショッピングカートを実装するためのJavaScriptの具体的なコードを参考までに紹介...