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

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

ブラウザの互換性とは、スタイルの互換性 (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 のガベージコレクションの仕組みの詳細な説明

推薦する

VMware 構成 VMnet8 ネットワーク方法の手順

目次1. はじめに2. 設定手順1. はじめに1. NAT モード (VMnet8) は、仮想マシン...

JavaScript 配列の詳細な概要

目次1. 配列誘導1. 文字列を配列に分割する2. コレクションとマップを新しい配列に変換する3. ...

Vue3 の ref toRef と toRefs の違いを理解する方法

目次1. 基本1.参照2. 参照3. 参照4. 最適な使い方2. 詳細な1. なぜrefが必要なのか...

CSS はスクロールバーを非表示にしてコンテンツをスクロールする効果を実現します (3 つの方法)

フロントエンド開発では、スクロールバーを非表示にしながらスクロールをサポートしなければならないという...

MySQL の binlog ログと、binlog ログを使用してデータを回復する方法を説明します。

ご存知のとおり、binlog ログは MySQL データベースにとって非常に重要です。万が一、データ...

MySQL 変数の原理と応用例

MySQL ドキュメントでは、MySQL 変数はシステム変数とユーザー変数の 2 つのカテゴリに分類...

Vue+Openlayerはグラフィックスのドラッグと回転変形効果を実現します

目次序文関連資料成果を達成する実装手順序文Openlayer には独自の拡張プラグイン ol-ext...

Linux システムが VMware にインストールされているかどうかを確認する方法

現在の Linux システムが VMware にインストールされているかどうかを確認する方法を教えて...

CSS の vertical-align プロパティとベースラインの問題に関する深い理解

vertical-align属性は、主にインライン要素の配置を変更するために使用されます。インライン...

IISMonitor を使用して Web ページを監視し、IIS を自動的に再起動します。

目次1. ツールの紹介2. ワークフロー3. 操作インターフェースとパラメータ設定(1)監視と再起動...

Linux サーバーに埋め込まれた ddgs および qW3xT.2 マイニング ウイルスの対処の実践記録

序文仮想通貨の狂気的な投機により、マイニングウイルスは犯罪者が最も頻繁に使用する攻撃方法の 1 つに...

Alibaba Cloud Ubuntu 16.04 が IPSec サービスを構築

IPSec の概要IPSec (インターネット プロトコル セキュリティ): ネットワーク層と適用さ...

Vue開発の詳細な説明 ソートコンポーネントコード

目次 <テンプレート> <ul class="コンテナ">...

MySQL 5.7.17 のインストールと設定方法のグラフィック チュートリアル (Windows)

1. ソフトウェアをダウンロードする1. MySQL の公式サイトにアクセスし、Oracle アカ...

Ubuntu 16.04 64ビット版を3つのステップで32ビットプログラムと互換性を持たせる

ステップ1: システムのアーキテクチャを確認する dpkg --print-architecture...