プロが教える店舗&オフィスのセキュリティ対策術

Perl 初心者です。よろしくお願いします。以下のように変数$wwwstr を作って表示させたいのですが、<body>にはリンク表示できても、Textarea ないには変数の中身が表示されてしまいます。
原因が分かりません。Style のせい?Form の部品のせい?
よろしく御教示下さい。

#!/usr/local/bin/perl
$wwwstr = 'http://www.germanft.com/DETAIL.html';
$disp_data= '<a href=' . $wwwstr . '>' . '(WWW)' . '</a>';
##### 表示部 ##############
print <<EOD;
Content-type: text/html; charset=sjis-jp;
<HTML>
<HEAD>
<META http-equiv="Content-Style-Type" content="text/css">
<TITLE></TITLE>
</HEAD>
<BODY bgcolor="#fcf2d8">
$disp_data

<FORM method="POST" action="EditDic.cgi" name="kdicFORM">
<TEXTAREA rows="12" cols="40" name="dicdata";
style="background-color:#EBF2DF;
padding:8px;
font-size:12pt;
font-weight:bolder;
line-height:16pt; border:5px double #008040;
font-family: 'MS P明朝',serif">$disp_data</TEXTAREA>
</FORM>
</BODY>
</HTML>
EOD
__END__

A 回答 (2件)

>では何かうまい手を使って、テキストエリア内の任意の文字列にリンクを張ることはできませんでしょうか?



HTMLの仕様に反しているはずなので、やりたいのであれば、ブラウザを改良(改造?)しない限り無理でしょう。

テキストエリアの内容を変更して送信したいとかとなると無理ですが、テキストエリアを使用せずに、似たように表示したいだけなら、インラインフレームを使えばなんとかなりますが。

方法としては、

(1) インラインフレームを使う

まず、$disp_dataを出力するCGIを別途作る
出力は、

<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=shift_jis">
</HEAD>
<BODY>
$disp_data
</BODY>
</HTML>

程度で良いでしょう。
これでリンク部分ができあがり。
ここでは、適当に link.cgi とでもしておきます。

次に、元々のCGIの方でインラインフレームを使用するようにします。
<FORM>~</FORM>の部分を<IFRAME>~</IFRAME>に変更。

<IFRAME src="link.cgi" height=300 width=300>
IFRAME対応のブラウザでないと見れません。
</IFRAME>

こんな感じで、srcに先のlink.cgiを指定します。
見た目は、テキストエリアに近いと思いますが、IFRAMEを使えないブラウザもあるので注意が必要です。
どちらかというと、こちらの方が素直なやり方でしょう。

※クリックされたときに、フォームで何か送信したいのだとしたら、内容をHIDDENでセットしておき、アンカータグにonclickイベントを設けて、フォームをsubmitさせれば良いでしょう。

(2) テキストエリアをクリックしたら・・・

テキストエリアでトリッキーなことをします。

<TEXTAREA
onclick="window.open('$wwwstr','new','');"
style="text-decoration:underline;">(WWW)</TEXTAREA>

フォント色は帰られないと思いますが、下線を引いてリンクっぽく見せる。
テキストエリアがクリックされたら、リンク先に飛ばす。
window.openでなく、location.hrefでも良いですが。
まあ、こんなサイトがあったら、私は二度と見に行かないような気がしますが(笑)
    • good
    • 1
この回答へのお礼

I am alive 様、お礼が遅れてしまい、申し訳ありません。(1)の方法でまず途中までできました。途中まで、ともうしますのは、先回、(1)のうしろに書き添えて下さった;
※クリックされたときに、フォームで何か送信したいのだとしたら、内容をHIDDENでセットしておき、アンカータグにonclickイベントを設けて、フォームをsubmitさせれば良いでしょう。
--これが初心者の私にできたらすごい!と予感させてはくれるのですが、力不足でプログラムができません。<FORM action="zzz.cgi" name=ancherFORM><INPUT type=HIDDEN...</FORM> と<A href=xx onclick=submit() >文字列</A>

などとまだ頭の中で考えているうちどんどん日数が経ってしまい、ご返事するのが遅れあわてております。
どうも<FORM..>以下いまいち見通しが立ちません。アドバイスをいただければ幸いです。

お礼日時:2004/07/03 17:53

<TEXTAREA>~</TEXTARE>で囲まれたテキストは、そのまま表示されます。


Perlではなく、普通にHTMLで書いてみればわかります。

<TEXTAREA><a href="URL">(WWW)<a></TEXTAREA>

↑これだと、テキストエリアの中に、

<a href="URL">(WWW)<a>

と表示されるはず。
テキストエリアの中でリンクは張れません。

http://tohoho.wakusei.ne.jp/html/textarea.htm

参考URL:http://tohoho.wakusei.ne.jp/html/textarea.htm
    • good
    • 0
この回答へのお礼

ありがとうございました。では何かうまい手を使って、テキストエリア内の任意の文字列にリンクを張ることはできませんでしょうか?アイディアが浮かびません。お知恵を拝借できれば有り難いのですが。。。

お礼日時:2004/06/22 05:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!