JavaScript初心者です。
document.write()でhtmlかき出しをする際、
そのまま出力されるのではなくある程度の実体参照符号化が行われているということがわかりました。
例えば、
・document.write("<>&"); → <>&
・document.write("<br />"); → <br>
・document.write("</3>"); → <!--3-->
といった具合に加工されているようです。(あくまでhtmlソースの話です)
かゆいところに手が届くいい機能だとは思うのですが、「そのまんま」出力したい場合もたまにはあります。そういうメソッドはないのでしょうか。
PHPやPerlの場合は print でそのまま出力できるのでJavaScriptはどうなの?と思ってしまったわけです。
「無理」という回答でも結構です。よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
私もjavascript歴はそんなに長いわけではないので、間違ってたらすいません。
はじめに断っておきます。さて、本題ですが、テキストをプレーンで出力したいということでしょうか?
DOMが使えるのならtextContentプロパティ、innerTextプロパティに書き込めばいいようです。
(参考:http://www.openspc2.org/reibun/JavaScript_techni …
あるいはjQueryのtext()を使えばブラウザを意識する必要がないので楽ですね。
javascriptの組み込みでは、確認した限りではdocumentオブジェクトにそのまま出力する関数はないですね。
どうしてもdocument.writeを使いたいのであれば、がんばって自力で変換するしかないかもしれません。
ちなみに、
>・document.write("<>&"); → <>&
>・document.write("<br />"); → <br>
>・document.write("</3>"); → <!--3-->
>といった具合に加工されている
というのは違う気がします。
<>&と<br />はちゃんとそのまま出力されてますし(Firebugで確認)、</3>はHTMLとして無意味なので無視されているだけだと思います(確証ありませんが)。
実体参照符号化はされておらず、結局HTMLとしてどう解釈されるかなだけかと思われます。
以上参考になったら幸いです。
ありがとうございます。
とりあえずそういう関数はないとわかっただけですっきりしました。
ちなみに
>・document.write("<>&"); → <>&
>・document.write("<br />"); → <br>
>・document.write("</3>"); → <!--3-->
はfirefox3.5.2(Win-XP)にて、「Ctrl+A」 > 「選択した部分のソースを表示」で見たものです。
No.3
- 回答日時:
> ちなみに、改めてPHPで print '</3>'; を実行してみましたが、
> 手打ちでhtmlを書くのと同様そのまま書き出しでした。
それはおかしいな。
Firefox 3.5.2で
<>&
<br />
</3>
と書いただけのHTMLを表示し
選択した部分のソースを表示してみたら、こちらでは
<html><head></head><body><>&
<br>
<!--3-->
</body></html>
と表示されたから。
それから、No.2の回答で言いたかったことは、
ブラウザのパーサーが </3> を <!--3--> と解釈している以上、
</3> と書くのと <!--3--> と書くのは全く同じことで、
そのまま書き出すということにこだわるのは
できるできないではなくそもそも意味がないのではないかと言うこと。
(JavaScript出力でも、HTMLの手打ちでも、PHP出力でも、)
</3> が必ず <!--3--> と解釈されるなら、
「</3>を出力する」と言う動作は「<!--3-->を出力する」という動作と等価なはずなんです。
No.2
- 回答日時:
document.writeは直接関係なくて
ブラウザのHTMLパーサーがそう解釈しているようです。
なので、PHPやperlで書き出したとしても同じ結果だと思います。
--------------------------------------------------
<html>
<head>
<script>
//Firefox3だと
// <>&
// <br>
// <!--3-->
//というalertがでる。
window.onload = function(){
alert(document.getElementById("test").innerHTML);
}
</script>
</head>
<body>
<div id="test">
<>&
<br />
</3>
</div>
</body>
</html>
なるほど、JavaScriptの書き出したものは直接的な方法で見ることが出来ないのでもどかしいですね。そもそもJavaScriptには書き出しという概念がないのでしょうか…
ちなみに、改めてPHPで print '</3>'; を実行してみましたが、手打ちでhtmlを書くのと同様そのまま書き出しでした。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript html javascriptにてWeb SQLを操作したい。 2 2022/12/16 17:43
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- HTML・CSS HTMLの条件によって表示方向が切り替わる実装のコードを教えて下さい。 (コードは下記リンクを参照) 1 2022/09/25 14:35
- HTML・CSS HTMLソースの質問 3 2022/07/28 13:29
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- その他(OS) デスクトップにアイコンが出来ました。これは消しても良いですか? 2 2022/11/13 10:09
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
window.openでタイトル名の指定
-
document.clear()の使い方について
-
なぜ、ジャバスクリプトが表示...
-
document.open()の意味とは
-
java カレンダーの日付指定で...
-
ジャバスクリプトで空白(スペー...
-
document.writeで画面が消える
-
今日の月と日付の1週間後や3日...
-
javaで画像をランダム表示しつ...
-
google apps scriptの終了のさせ方
-
idを使わずにonclickで自身の要...
-
Boolean型配列中のTrueの有無を...
-
JavaScriptで決まった「時刻」...
-
C#テキストボックスの文字を配...
-
JavaScript window.openで開く...
-
関数でy=g(x)のgとは何の略です...
-
jspからjavascriptの変数引継ぎ
-
jqGridについて
-
ActiveXobjectが作成できない
-
javascriptのdocument.allにつ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
window.openでタイトル名の指定
-
ホームページに日付を自動更新...
-
テキストボックスに入力された...
-
for文のiを使ってリンク先のア...
-
○歳△ヶ月と×日を計算してくれる...
-
引数を渡さずに呼び出し元の変...
-
なぜ、ジャバスクリプトが表示...
-
innerHTMLにて設定した情報を再...
-
前のページに戻るとページトッ...
-
更新でランダムでページ内のテ...
-
今日の月と日付の1週間後や3日...
-
「今日の日付けを画像で表示」...
-
java カレンダーの日付指定で...
-
文字列を点滅させたい
-
HTMLを記述しつつサブ窓(showM...
-
条件分岐(IF文)の簡素化
-
Java Scriptのメソッドについて
-
javascriptとphpの連携で疑問
-
現在の日付から、1ヶ月前にす...
-
この方法を教えてください。
おすすめ情報