cgi(Perl)スクリプト内でのJavaScriptの記述方法

[上に] [前に] [次に]
真樹 [E-Mail] 1999/11/09(火) 00:11:14
掲示板のアクセスログを取ろうと考えています。
ログ取りのcgiは用意いたしました。
呼び出しをJavaScriptでimgとして行うタイプです。

ところが、掲示板の適所に記述をしたつもりのですが、JavaScriptが読み込まれていないようです。

どこを変えればよいかお教えください。


以下に呼び出し部前後を添付いたします。


print "Content-type: text/html\n\n";
print "<html><head><title>$title</title></head>\n";
print "$body\n";
print "<script language=\"JavaScript\"><!-- document.write('<img src=\"cgi-bin/accesslog.cgi?' + document.referrer + '\" width=1 height=1>'); // --></script><noscript><img src=\"cgi-bin/accesslog.cgi\" width=1 height=1></noscript>";
print "$title\n";


よろしくお願いいたします。

真樹 [E-Mail] 1999/11/09(火) 00:14:39
JavaScriptのところが長くて読みづらくなってしまいました。

スクリプトの途中で切って良いものかわからなかったので、
あのような形になっております。

さくらいゆずる 1999/11/09(火) 00:38:41
一行で記述されているため、「<!--」以降のJavaScriptの記述が
コメントとみなされているのでは?

私は

print <<"_JS_";
<script language="JavaScript"><!--
document.write('<img src="cgi-bin/accesslog.cgi?' + document.referrer + '" width=1 height=1>');
// --></script>
<noscript><img src="cgi-bin/accesslog.cgi" width=1 height=1></noscript>
_JS_

て感じの書き方が好きです。楽なので。

J.Naka 1999/11/09(火) 00:44:17
上のPerlのprint出力(標準出力)をコンソロールなどに掃き出させて、JavaScriptコードとして正しいか確認してみると良いと思います。
#自分も過去に、Print文に書く、JavaScriptコードが所定の形にならなくて苦労した事ありやす。

バーチャルヒューマン [HomePage] 1999/11/09(火) 10:15:24
>一行で記述されているため、「<!--」以降のJavaScriptの記述が
>コメントとみなされているのでは?

私も、cgiがらみじゃないですが、こんな経験ありました。確か、さくらいゆずるさん
のおっしゃる通り!
記憶薄ではありますが、こんな風に試すと

<script language="JavaScript">
<!-- document.write("abc");
document.write("123");
//--></script>
結果は、"123" だけが表示されます。
つまり、"<!--" のある行は、コメントアウトされてしまうのでしょう?!

真樹 [E-Mail] 1999/11/10(水) 00:13:50
[[解決]]
みなさんありがとうございます。

アドバイス通り記述させていただきました。
無事動作が確認できました。
ありがとうございました。

P.S.
 掲示板自体がcgiなのでしょうがないのでしょうが、
 リロードや書き込み後のsubmitでもカウントアップしてしまいます。
 これは(私の技術で出来るかどうかは別として)ロジック変更or記述方法で何とかなりそうですが、
 ブラウザの "戻る"ボタンですらカウントアップしてしまうのは、どうすればいいのかさっぱりわかりません。
 これは諦めるしかないのでしょうかね・・・。

[上に] [前に] [次に]