過去ログ表示


過去ログ 151 を表示

トピック内全 6 記事中の 1 〜 6 番目を表示
[ 最新記事及び返信フォームをトピックトップへ ]
このトピックの全ページ / [0]

javascriptによるMIMEタイプ変更
(#23794) このトピック中1番目の投稿
(環境: Win2000/Firefox1.0.4)

「本ウィンドウで発生したメッセージを別ウィンドウに表示する」ということをJavascriptで実現しようとしています。ログ出力のようなものをイメージしているので、テキスト出力が望ましいのですが、ここでつまずいています。

--- 呼び出し側HTML
<input type="button" value="Add to list" onclick="add2List('logmsg')" />

--- ココからスクリプト
var list = new Array();

function add2List(q) {
list.push(q);

var w = window.open("","list_win","directories=no,menubar=yes");
w.document.open("text/plain");
for( var i = 0; i < list.length; i++ ) {
w.document.writeln( list[i] );
}
w.document.close();

return true;
}
--- ココまでスクリプト

document.open で text/plain を指定するのですが、どうやら text/html として認識しているらしく、改行されずに横一列で表示されます。

ページソースを見ると改行された状態で見れます。ページの情報を見ると、確かにMIMEタイプが text/html となっています。

これをなんとか text/plain に変更する手段はないでしょうか?

ちなみに、IE6でこのスクリプトを実行すると、text/plain がきちんと指定されたような挙動を示します。また、Safariでは text/html 風に表示される上、ソースを見ると空になっています。

Re[1]: javascriptによるMIMEタイプ変更
(#23809) このトピック中2番目の投稿
(環境: WinXP SP2/Firefox1.0.6)

var list = new Array();

function add2List(q) {
list.push(q);

var w = window.open("","list_win","directories=no,menubar=yes");
w.document.open();
w.document.writeln("<pre>");
for( var i = 0; i < list.length; i++ ) {
w.document.writeln( list[i] );
w.document.writeln("</pre>");
}
w.document.close();

return true;
}

上記のようなことでは駄目でしょうか。
'&'や'<'が含まれる場合は、Stringのreplaceをかぶせればいいような気がいたしますが駄目でしょうか。

Re[2]: javascriptによるMIMEタイプ変更
(#23824) このトピック中3番目の投稿
(環境: その他/その他)

> '&'や'<'が含まれる場合は、Stringのreplaceをかぶせればいいような気がいたしますが駄目でしょうか。

"<plaintext>"
の方が「ログのような物の表示」らしいのでHTMLのタグ構文は既に要らないでしょう。
# <plaintext>には閉めタグは有りません。
他の目的でMiMEを制御し、見えないサイズの裏ポップアップ・(アンor)インストーラーでも起動させる**用なら別ですが...(^^)

Re[3]: javascriptによるMIMEタイプ変更
(#23826) このトピック中4番目の投稿
(環境: Win98/Firefox1.0.6)
2005/08/06(Sat) 17:45:00 編集(投稿者)

 いえ、そもそも document.write が出力するのは
タグで括られた部分じゃなくて、タグも含めた HTML
ソース(みたいなモン)なんで、document.writeln
の動作(解釈)もブラウザに拠るでしょうか…。
text/plain のつもりでもタグが動作することがある
んで…サーバ上の TXT ファイルなんかは、タグや
URI 書いちゃうとブラウザ毎でもちょっと解釈が別れ
ます(この辺は HTTP Response なんかも関係するん
でしょうけどね)。
 ですんでその辺も含めて、text/html で動作させた
方が無難じゃないかな…と思います。

参考:【Hello! JavaScript.】AKAMA Shun-ichi's website
http://www.axis.t.u-tokyo.ac.jp/~shunak/ecmascript/hello-js.html
 ここのページの下部に document.writeln について
ありますが、指摘されてる通り <pre> など、最低限の
タグを併用するべきです。
#まぁ、タグ出力するんなら全部 document.write
#で書いて <br> か \n 改行すれば良い…みたいなモン
#でもあるんですが、この辺は作り方次第ですね。 :P 

 なお、<plaintext> もあながち悪くはない(一応
現行のブラウザは大抵動作するので)んですが、
廃止済みのタグなので… 6mA さんの書いた通り
前後を <pre> でちゃんと括った方が良いです。
 今後のブラウザで動作しなくなったりするのも
ナンですから…

#でも、初めて気付きましたが(text/html しか
#出力しないんでι)document.open の MIMEtype
#パラメータが動作しない、って事なんでしょう
#か…。後でちょっと調べてみようかな。

> > '&'や'<'が含まれる場合は、Stringのreplaceをかぶせればいいような気がいたしますが駄目でしょうか。 
> 
> "<plaintext>"
> の方が「ログのような物の表示」らしいのでHTMLのタグ構文は既に要らないでしょう。

document.open("text/plain") (javascriptによるMIMEタイプ変更)
(#23833) このトピック中5番目の投稿
(環境: BSD/Mozilla1.8b)

Gecko 1.7.xでは対応してませんが、trunkでは対応しています。
https://bugzilla.mozilla.org/show_bug.cgi?id=73409
http://www.mozilla-japan.org/projects/deerpark/new-web-dev-features.html

W3C DOMの標準規格ではないので、対象ブラウザをできるだけ広げるなら、
<pre>とかを使うべきですね。

Re[4]: javascriptによるMIMEタイプ変更
(#23868) このトピック中6番目の投稿
(環境: Win2000/Firefox1.0.6)

みなさん、ありがとうございます。

trunkで対応しているという旨のご指摘もございましたが、
やはり間口を広くもっておきたいので、
text/html を指定し、<pre></pre>で囲うことにします。

大変参考になりました。
済!

このトピックの全ページ / [0]

返信不可


- Child Tree -