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

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

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

推薦する

JavaScript のクロージャの詳細な説明

導入クロージャは JavaScript の非常に強力な機能です。いわゆるクロージャは関数内の関数です...

Springboot+Vue-Cropperでアバターの切り取りとアップロードの効果を実現

アバターをアップロードするにはVue-Cropperコンポーネントを使用します。参考までに具体的な内...

MySQL ページングの制限パラメータの簡単な例

Mysqlページングの2つのパラメータ ユーザー制限 1,2 から * を選択 1 は検索する最初の...

CSS の歪んだ影の実装コード

この記事では、CSS ワープ シャドウの実装コードを紹介し、皆さんと共有します。詳細は以下の通りです...

Vue のプロダクション環境と開発環境を切り替えてフィルターを使用する方法

目次1. 本番環境と開発環境を切り替える最初の方法: .envファイルを設定する2番目の方法2. フ...

MySQLデータベースの基本構文と操作

MySQLデータベースの基本構文DDL操作データベース作成構文: create database デ...

Nginx でアンチホットリンクを設定するための手順を完了する

必要:通常、サイト側は、ウェブサイト上の動画や写真が盗まれるのを防ぎたいと考えています。結局のところ...

VMware に Linux システム (Redhat8) と仮想マシンのネットワーク構成をインストールする方法

目次1. VMwareをインストールする1.1 VMwareworkstationsをダウンロードし...

HTML(CSSスタイル仕様)を読む必要があります

CSS スタイル仕様1. クラスセレクター2. タグセレクター3. IDセレクター4. CSSスタイ...

Linux で MySQL をインストールする簡単な方法

Linux に MySQL をインストールする方法をオンラインで検索すると、多くの方法が表示されまし...

Typora コードブロックのカラーマッチングとタイトルシリアル番号実装コード

効果: タイトルには独自のシリアル番号があり、コードブロックには配色があり、コードブロックの左上隅に...

Web ページでパラメータ名によって ActiveX コントロールのプロパティに値を割り当てる例

コードをコピーコードは次のとおりです。 <HTML> <ヘッド> <T...

CSS で背景ぼかし効果を実装するサンプルコード

以下のような効果でしょうか?もしそうなら、ぜひ読み進めてください! コードデモンストレーション(上の...

DockerでHadoopを実行しイメージを作成する方法

車輪の再発明として、ここでは再パッケージ化を使用して Docker ベースの Hadoop イメージ...

Rancher で Kubernetes 用の標準化された VMware イメージを構築する方法

Kubernetes を学習するときは、Kubernetes 環境で練習する必要があります。ただし、...