6

それぞれ本文に次のような2つのWebページを考えてみましょう。

<body>
<script>
document.writeln('<textarea></textarea>')
</script>
</body>

<body>
<script>
var t = document.createElement('textarea');
document.body.appendChild(t);
</script>
</body>

(テキストエリアJavaScriptから生成する必要があり、ページにハードコーディングできない、より大きなものの一部と考えてください)。どちらも同じ出力を生成しますが、前者は「悪い」と見なされ、後者は「正しい」方法と見なされます。(右?)

一方、ページに何かを入力してから更新するか、別の場所に移動して[戻る]をクリックすると、前者の場合はテキストエリアに入力した内容が保持され、後で入力した内容は失われます。(少なくともFirefoxでは。)

後者の方法を使用しても、ユーザーが誤って更新を押したり、(少なくともFirefoxでは)戻るボタンを使用して戻ってきた場合でも、ユーザーがフォームに入力した内容が保存されるという便利な機能はありますか?

4

4 に答える 4

5

document.write バージョンは、ページ上の既存のコンテンツを実際に吹き飛ばしていると思います。つまり、 body タグと script タグはなくなります。これが、人々が通常 appendChild を使用する理由です。

テキストを保持するかどうかは、ブラウザー固有です。Firefox が将来のバージョンで動作を変更しないとは思えません。ユーザーがページから移動しようとして、編集フィールドに保存されていないコンテンツがある場合は、警告ダイアログを実装することをお勧めします。通常、これは unload イベントで行います。

于 2008-12-15T02:42:15.227 に答える
4

document.write() は、ページがレンダリングされるときにインラインで実行される限り、ページのコンテンツを吹き飛ばすことはありません。オンライン広告では、 document.write() を多用して、ページの読み込み時に動的に広告をページに書き込みます。

ただし、後でページ履歴で document.write() メソッドを実行した場合 (本文が完全にレンダリングされた後)、Chase が言うように、既存の本文が吹き飛ばされ、引数が document.write() に表示されます。 .

それ以外は、フォームの保存動作はかなりブラウザ固有のものであり、多くの場合に依存すべきものではないことに同意します。これは、開発者が認識したり利用しようとしたりするものではなく、ユーザーを支援するための機能です。

于 2008-12-21T19:42:25.270 に答える
0

新しいテキストエリアをターゲットにするために使用できるフックを追加することは可能でしょうか?例えば。<div>

<div id="addtextarea"></div>

var e = document.getElementByID('addtextarea');
e.innerHTML = '<textarea></textarea>';

次に、コンテンツを覚えておく必要がある場合は、innerHTML値を使用してHTMLを含めるか、textareaのテキストノード値のみを使用してテキストを抽出することができます。

于 2008-12-15T10:40:21.673 に答える
0

通常、DOM 要素を作成して挿入することを好みます。特に、ページ内の必要な場所に正確に挿入できるためです (つまり、object.appendChild または body.appendChild を使用します)。また、挿入がページの読み込み中か後であるかは問題ではないため、一般化された挿入関数を使用して、ページ全体の読み込み中または読み込み後にいつでも使用できます。

ただし、ロード プロセス中に JavaScript を含むコンテンツ (つまり、SCRIPT type="text/javascvript"......./SCRIPT シーケンス) を挿入する場合は、スクリプトを挿入するために document.write を使用する必要があります。実行する。

  • document.body.appendChild(theInsertionObject) を使用すると、ロード プロセスの現在の時点で SCRIPT タグ シーケンスを含む挿入が適切に追加されますが、javascript は実行されません。

  • document.write(theInsertionCode) を使用すると、ロード プロセスの現在のポイントにコードが挿入され、ページの残りの部分がロードされる前に、埋め込まれた SCRIPT タグ シーケンスが実行されます。

于 2011-09-27T16:07:37.433 に答える