JavaScript 言語にはブラウザーごとに若干の違いがありますが、DOM 操作の違いほど大きくはありません。ここで、「for ループ」の違いの 1 つを列挙します。 . そして、この違いを効果的に解決する方法を紹介します。
2. 問題の説明
次のテスト コード例 1 では、IE6 と Chrome の出力結果が一致しません。IE6 では、for ステートメント内のコードが実行されません。
alert("Prepare toString が for ループ内にあるかどうかをテストするには Enumerated out")
var forTest = { toString: 1 }
for (i in forTest) {
alert("toString はループアウトされています")//これはIE6では実行されませんが、Chromeで実行して結果値「1」を出力します
}
3. JavaScriptのオブジェクトに「toString」が含まれています、「valueOf」、「isPrototypeOf」、「propertyIsEnumerable」、「toLocaleString」、「hasOwnProperty」、「constructor」の 7 つの組み込みメソッドです。これら 7 つの組み込みメソッドは、for ステートメントを使用して列挙することはできません。ただし、IE6 と Chrome では、組み込みメソッド オーバーライドのサポートに一貫性がありません。 IE6: 組み込みのオーバーライド メソッドは使用できますが、FOR ループを列挙することはできません。 Chrome: 組み込みメソッドをオーバーライドでき、FOR ループはオーバーライドされた組み込みメソッドを列挙することもできます。
したがって、上記のテストコード例 1 の IE6 ブラウザーと Chrome ブラウザーの出力結果は矛盾しています。
4. 問題を解決します。
上記の問題を解決するには、以下が必要です。 ユーザーが使用するブラウザーがオーバーライドされた組み込みメソッドを列挙するための FOR ループをサポートしているかどうかすべてのブラウザーで FOR ループを使用してオーバーライドされた組み込みメソッドを列挙できるように、非互換性の問題を適切に解決する方法
(解決コード例 2)
for (i in forTest) {
enumerables =
}
if (enumerables) {//これらはすべて Object オブジェクトのプロパティです。一部のブラウザ (ie6) の for ループはこれらのプロパティを走査しないため、プロパティ
enumerables = ['hasOwnProperty', 'valueOf', ' isPrototypeOf', 'propertyIsEnumerable',
'toLocaleString', 'toString', 'constructor'];
}
// enumerables が null の場合、ブラウザは組み込みメソッドをサポートします。列挙オーバーライド。それ以外の場合は、次のコードに示すように、組み込みメソッドを新しいオブジェクトに強制的にコピーすることしかできません。
/**
* すべての属性を指定されたオブジェクトにコピーします
* @param {Object} マージするオブジェクト オブジェクト
* @param {Object} config ソース属性
* @return {Object} マージされたオブジェクトを返します
*/
function apply(object, config) {
if (object && config && typeof config === 'object') {
var i, j, k ;
// ここでオブジェクトをコピーする通常の方法
for (i in config) {
object[i] = config[i];
}
// 複数のブラウザーと互換性あり-in プロパティは新しいオブジェクトにコピーできます。
if (enumerables) {
for (j = enumerables.length; j--;) {
k = enumerables[j]; .hasOwnProperty(k)) {//オブジェクトに特定の属性があるかどうかを判断します。このプロパティは文字列として指定する必要があります。 (例: config.hasOwnProperty("toString"))
object[k] = config[k];
}
}
}
}
オブジェクトを返します。 > };
次に、結果を検証するためにいくつかのテスト コードを作成します (テスト コードの例 3)
コードをコピーします
alert(a.toString) //ie6 でコピーが失敗した場合は、上書きした値ではなく「ネイティブ コード」のみを入力できます。 ({},forTest)
alert(b.toString)//apply 関数を使用すると、IE6 と Chrome で出力される値は、期待されるカバレッジ値 "1"
5. 概要
作者は、IE6 の for ステートメントがこれらの 7 つの組み込み関数を無視リストにマークしているため、それらがどのように上書きされても for に列挙できず、Chrome はインテリジェントに列挙できるのではないかと推測しています。上書きされた組み込み関数をコピーします。
ソリューション コード例 2 の apply 関数を使用して、複数のブラウザーでの for ループの不一致の問題を解決します。
6. よくある質問
Q: まずブラウザーのバージョンが IE6 かどうかを確認してから、対応する列挙スキームを設定してはどうでしょうか?
A: 私の個人的な見解では、市場にそれほど多くのブラウザがあるかどうかはわかりません (PC 用のブラウザだけでなく、モバイル ブラウザにも N 個のブラウザがあり、ブラウザの新しいバージョンがどのようなものになるかはわかりません) for ステートメントにはどのようなメカニズムが使用されますか?そこで、まず for ステートメントのメカニズムをテストしてみましょう。

火狐浏览器是“美国”的。Firefox火狐浏览器是开源基金组织Mozilla研发的一个自由及开放源代码的网页浏览器;而Mozilla基金会成立于2003年7月,是一家美国公司,现位于美国加利福尼亚州的芒廷维尤。

电脑浏览器打不开网页但能上网解决方法:1、网络设置问题,将路由器断电并等待几分钟,然后再重新插上电源;2、浏览器设置问题,清除浏览器缓存和浏览历史记录,确保浏览器没有设置代理服务器或虚拟专用网络;3、DNS设置问题,将DNS设置更改为公共DNS服务器地址;4、杀毒软件或防火墙问题,禁用杀毒软件或防火墙,再尝试打开网页;5、网页本身的问题,等待一段时间或联系网站管理员了解情况。

Windows10自带的Edge浏览器在程序面板上是不能被卸载的,但是有些网友不喜欢使用edge浏览器,想要卸载掉它。那么我们可以尝试如何卸载edge浏览器呢?下面小编就教下大家强制卸载edge浏览器的方法。具体的方法如下:1、右击左下角开始,点击“windowspowershell(管理员)”打开。2、进入命令界面,输入代码get-appxpackage*edge*,查找edge包。3、在edge包中找到packagefullname,选中并复制。4、接着输入命令Remove-appxpack

微软于2020年初发布了基于Chromium(谷歌的开源引擎)的NewEdge版本。新Edge的感觉与谷歌Chrome相似,并且具有Chrome中可用的功能。但是,许多用户报告说他们在启动MicrosoftNewEdge后立即看到黑屏。用户可以访问设置菜单,但是当他们单击菜单中的任何选项时,它不起作用,只有黑屏可见。当计算机鼠标悬停在选项上并且用户可以关闭浏览器时,它会突出显示选项。在PC上打开新的Edge浏览器时是否遇到黑屏?那么这篇文章将对你有用。在这篇文章中,

如何阻止Outlook在Edge中打开链接在继续之前,请确保您的首选浏览器在Windows中设置为默认浏览器。这可确保在所需的浏览器中打开Outlook链接。要检查并设置默认浏览器:对于Windows10:单击“开始”菜单,然后选择“设置”转到“应用程序”,然后转到“默认应用程序”在默认应用程序列表的底部查找“Web浏览器”如果列出了您的首选浏览器,则一切就绪。如果列出了MicrosoftEdge,请单击它,然后从列表中选择您喜欢的浏览器。如果出现提示,请单击“仍然切换”。修复Edge问题中Ou

许多用户对MicrosoftEdge中网页周围的白色边框不满意。他们认为这是不必要的和分散注意力的,他们要求Microsoft完全删除MicrosoftEdge的边框。这类似于“不要修复没有损坏的东西”的说法,但Microsoft似乎没有考虑到这一点。当然,它是一种流行的网络浏览器,提供多种功能,包括内置广告拦截器、跟踪预防和密码管理器。但是,某些用户可能会发现浏览器在网页周围有边框。此边框可能会分散注意力或难看,有几种方法可以将其删除。在关于r/Edge的冗长对话中,一些普通的非内部用户发现,

edge是由微软开发的基于Chromium开源项目及其他开源软件的网页浏览器。Edge浏览器主要特点是能够支持目前主流的Web技术,作为Windows10自带浏览器,给微软用户带来更好的功能体验。

苹果自带的浏览器叫“Safari”;Safari是一款由苹果公司开发的网页浏览器,是各类苹果设备的默认浏览器,该浏览器使用的是WebKit浏览器引擎,包含WebCore排版引擎及JavaScriptCore解析引擎,在GPL条约下授权,同时支持BSD系统的开发。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

Dreamweaver Mac版
ビジュアル Web 開発ツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。
