ただし、innerHTML には独自の問題がいくつかあることを知っておく必要があります。
1. HTML 文字列に defer としてマークされたスクリプト タグ (
) が含まれている場合、innerHTML 属性が適切に処理されない場合、 Internet Explorer に表示され、スクリプト インジェクション攻撃を引き起こします。
2. innerHTML を設定すると、イベント ハンドラーが登録されている既存の HTML 要素が破壊されるため、一部のブラウザーではメモリ リークの潜在的なリスクが発生する可能性があります。
他にも、言及する価値のある小さな欠点がいくつかあります。
1. 作成したばかりの要素への参照を取得できないため、それらの参照を取得するにはコードを手動で追加する必要があります (DOM を使用)。 API)。
2. すべてのブラウザーのすべての HTML 要素に innerHTML 属性を設定することはできません (たとえば、Internet Explorer では、テーブルの行要素に innerHTML 属性を設定できません)。
私は、innerHTML 属性の使用に関連するセキュリティとメモリの問題のほうが心配です。明らかに、これは新しい問題ではなく、これらの問題のいくつかについて解決策を見つけ出した才能ある人々がすでにいます。
Douglas Crockford は、HTML 要素登録イベント ハンドラーによって発生する一部の循環参照を解除し、ガベージ コレクター (ガベージ コレクター) がこれらの HTML 要素に関連付けられたメモリを解放できるようにするクリーンアップ関数を作成しました。
<script>…</script> HTML 文字列から script タグを削除するのは、見た目ほど簡単ではありません。正規表現は目的の効果を達成できますが、それがすべての可能性をカバーしているかどうかを知るのは困難です。これが私の解決策です:
/<script>]*>[Ss]*?</script>[^>]*>/ig
ここで、これら 2 つの手法を 1 つの setInnerHTML 関数に結合し、setInnerHTML 関数をバインドしましょう。 YUI の YAHOO.util.Dom:
YAHOO.util.Dom.setInnerHTML = function (el, html) {
el = YAHOO.util.Dom.get(el ); | typeof html !== 'string') {
return null;
}
// 循環参照を中止します
(function (o) {
var a = o.attributes , i, l, n, c;
if (a) {
l = a.length;
for (i = 0; i n = a [i].name; if (typeof o[n] === '関数') {
o[n] = null; > 0; i c = o.childNodes[i];
// 子ノードをクリアします
argument.callee(c); YUI を通じて要素上のすべてのリスナーを登録します。 addListener > // HTML 文字列からスクリプトを削除し、innerHTML 属性を設定します
el.innerHTML = html.replace(/
]*>[Ss]*?
]*>/ig, "" ; 式に不足がある場合はお知らせください。
明らかに、Web ページに悪意のあるコードを挿入する方法は他にもたくさんあります。 setInnerHTML 関数は、すべての A グレードのブラウザーでの
タグの実行動作のみを正規化します。信頼できない HTML コードを挿入する場合は、必ず最初にサーバー側でフィルタリングしてください。これを実行できるライブラリは数多くあります。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。

JavaScriptは、最新のブラウザにすでに組み込まれているため、インストールを必要としません。開始するには、テキストエディターとブラウザのみが必要です。 1)ブラウザ環境では、タグを介してHTMLファイルを埋め込んで実行します。 2)node.js環境では、node.jsをダウンロードしてインストールした後、コマンドラインを介してJavaScriptファイルを実行します。

Quartzタイマーを使用してタスクをスケジュールする場合、Quartzでタスク通知を事前に送信する方法、タスクの実行時間はCron式によって設定されます。今...

JavaScriptプログラミング、プロトタイプチェーンの関数パラメーターの理解と操作のJavaScriptのプロトタイプチェーンの関数のパラメーターを取得する方法は、一般的で重要なタスクです...

WeChatアプレットWeb-ViewでVue.jsを使用する動的スタイルの変位障害がvue.jsを使用している理由の分析...

複数のリンクの同時ゲットリクエストを作成し、結果を返すために順番に判断する方法は? TamperMonkeyスクリプトでは、複数のチェーンを使用する必要があることがよくあります...


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

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

WebStorm Mac版
便利なJavaScript開発ツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ホットトピック



