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

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

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

推薦する

TypescriptとAxiosに基づくインターフェースリクエスト管理の詳細な説明

目次アイデア傍受を要求するレスポンスインターセプションhttpClient.tsを使用してリクエスト...

SQL における参照整合性の詳細な説明 (1 対 1、1 対多、多対多)

1. 参照整合性参照整合性とは、主に外部キー制約を使用した複数のテーブル間の設計を指します。複数テ...

ドロップダウンメニューを表示または非表示にするJavaScript

この記事では、ドロップダウンメニューを表示および非表示にするJavaScriptの具体的なコードを参...

Mysqlツリー再帰クエリの実装方法

序文部門テーブルなどのデータベース内のツリー構造データの場合、部門のすべての従属部門または部門のすべ...

フォームの読み取り専用属性と無効な属性についての簡単な説明

フォーム内の読み取り専用および無効な属性1. 読み取り専用:サーバーは、ユーザーがデータを変更するこ...

ウェブメッセージボード機能を実現するjs

この記事の例では、Webメッセージボードを実装するためのjsの具体的なコードを参考までに共有していま...

MacにHomebrewをインストールする際の注意点

最近、Xiao Ming は新しい Mac を購入し、独自のブログ Web サイトを構築したいと考え...

ノードイベントループにおけるイベント実行の順序

目次イベントループブラウザ環境イベントループノード環境イベントループ6つのステージ(1)setTim...

Linux で Jenkins プロジェクトを構築するプロセス (CentOS 7 を例に)

https://gitee.com/tengge1/ShadowEditor のデプロイメントを例...

クリーンなXHTML構文

XHTML を書くには、明確な HTML 構文が必要です。 XHTMLを書くには、きれいなHTML構...

Centos7 で MySQL マスター スレーブ サーバーを構築する方法 (グラフィック チュートリアル)

この記事では主に CentOS 上で MySQL マスタースレーブサーバーを構築する方法を紹介します...

WindowsにOpenSSHをインストールし、SSHキーを生成してLinuxサーバーにログインします。

SSH の正式名称は Secure SHell です。 SSH を使用すると、送信されるすべてのデ...

ウェブフロントエンドに対する一般的な攻撃とその防止方法

ウェブサイトのフロントエンド開発で発生するセキュリティ問題は、クライアントブラウザで実行されるコード...

HTML テーブル マウス ドラッグ ソート機能

効果画像: 1. ファイルをインポートする<script src="js/jquer...

Docker イメージ + nginx を使用して Vue プロジェクトをデプロイする方法

1. Vueプロジェクトのパッケージ化開発されたvueプロジェクトに次の名前を入力し、パッケージ化し...