このjsの手直しお願いします



0   名前: はな : 2007/05/31(木) 09:40  ID:PUpbzUHQ sub-t1
ウェブ上に落ちてたのを改良し使おうかと考えているのですが動かなくて困っております。
私、jsは完全な初心者ですので全く理解出来ません。
ですのでよろしければ、手直しお願いします。
このjsは正常に機能すればコメント欄になります。

<html>
<head>
<script type="text/JavaScript">
<!--
// コメント用ここから
var u=new String(document.location);
if( u.indexOf("cgi#cp") < 0){
document.write('<style type="text/css">.cmnt_msg_view{display:none;}</style>');
}
function action_uri(id, val){
document.getElementById(id).action="./nicky.cgi?DT="+val+"#"+val;
}
function cmnt_name(id){
if( id.value=="" )
id.value=read_cookie('CommentName');
}
function cmnt_uri(id){
if( id.value=="" )
id.value=read_cookie('CommentURI');
}
function write_cookie2(nmid,ulid){
var expire = new Date();
var tmg=new Date(0);
var gs=tmg.getTime();
var nm=escape(document.getElementById(nmid).value);
var ul=escape(document.getElementById(ulid).value);
if( gs > 0 ) expire.setTime(expire.getTime() - gs);

expire.setTime(expire.getTime() + 180*24*3600*1000);
document.cookie="CommentName=" + nm + "; expires=" + expire.toGMTString() + ";";
document.cookie="CommentURI=" + ul + "; expires=" + expire.toGMTString() + ";";
}
function read_cookie(name){
var target = name + '=';
var c = document.cookie;
var cookieStartIndex = c.indexOf(target);
if (cookieStartIndex == -1)
return '';
var cookieEndIndex = c.indexOf(";", cookieStartIndex + target.length);
if (cookieEndIndex == -1) cookieEndIndex = c.length;
return unescape(c.substring(cookieStartIndex + target.length, cookieEndIndex));
}
function getcookie(name, uri){
var n=document.getElementById(name);
if( !n.value )
n.value=read_cookie('CommentName');
n=document.getElementById(uri);
if( !n.value )
n.value=read_cookie('CommentURI');
}
function cmnt_view(id){
if( document.getElementById(id).style.display != "block" ){
document.getElementById(id).style.display="block";
}else{
document.getElementById(id).style.display="none";
}
}
// コメント用ここまで
// -->
</script>

<style type="text/css">
<!--
/* コメント用のCSSここから */
.atlink{
width:$NickyWidth;
text-align:right;
color:#47c;
font-size:10pt;
margin:0px auto 0.5em auto;
padding-right:0.5em;
}
.button{
background:#bbbbbb;
border:solid 1px #333333;
}
TEXTAREA{
border:solid 1px #333333;
}
.CommentField{
width:$NickyWidth;
border:solid 2px $CommentFlColor;
background:$CommentBgColor;
padding:0.5em;
margin-left:auto;margin-right:auto;
}
.CommentName{
color:$CommentNameColor;
font-size:$CommentNameSize;
text-align:left;
}
.CommentMsg{
text-align:left;
padding:0.5em 0.5em 0.5em 1em;
color:$CommentFontColor;
font-size:$CommentFontSize;
}
.CommentNameStr{
font-size:$CommentNameStrSize;
}
/* コメント用のCSSここまで */
-->
</style>
</head>
<body>
<div class="atlink">$tbTag\[ <a href="$cgipath?DT=$pt?Mode=CPREVIEW#cp$pt" title="cp$pt" onclick="cmnt_view('cmnt_msg_$pt');getcookie('cn$pt', 'cu$pt');return false;">Comment($CommentNum)</a> ]\[ <a href="$cgipath?DT=$pt#$pt">URI</a> ]</div>
<div class="cmnt_msg_view" id="cmnt_msg_$pt">
<div class="CommentField">

<div class="CommentName">・$name($time)</div>
<div class="CommentMsg">$msg</div>

<div align="left" class="CommentNameStr">名前 <input id="cn$pt" class="button" type="TEXT" name="CommentName" size="$CommentNameWidth" value="$CommentName" onfocus="cmnt_name(this);">
 URL <input id="cu$pt" class="button" type="TEXT" name="CommentURI" size="32" value="$CommentURI" onfocus="cmnt_uri(this);">
<br>
<textarea class="button" name="CommentMsg" rows="$CommentRecv" cols="$CommentMessageWidth">$CommentMsg</textarea>
<br>
<input class="button" type="submit" name="CPREVIEW" value="プレビュー">
 <input class="button" type="submit" name="CINPUT" value="書き込む" onFocus="action_uri('cfm$pt', '$pt');" onclick="write_cookie2('cn$pt', 'cu$pt');">
</div>\n

</div></div>\n
</body>
</html>

1   名前: Z ◆l1Vr.FKUOo : 2007/05/31(木) 09:40  ID:KXOMMoT8 sub-Cl
「はじめにお読み下さい」(http://www.tagindex.com/bbs/note.htm)に下記条項が追加されていますが、手直しを依頼される「事情」はどういったものでしょうか?

質問時のご注意(http://www.tagindex.com/bbs/note.html#h201):
”質問にならないような「コードの作成依頼のみ」の投稿はご遠慮ください。(どうしてもという場合には、事情を説明した上でお願いしてみてください) ”

(「jsは完全な初心者」は事情とは言えないでしょう。「ウェブ上に落ちてた」のを「勝手に改造」というのも、著作権侵害に当たるやもしれませんし・・・)
#アナウンス(http://www.tagindex.com/cgi-lib/bbs/patio.cgi?mode=view2&f=165&no=130)から数週間経ってますよ(^^;。

2   名前: 匿名 : 2007/05/31(木) 09:40  ID:pCOJWdpQ sub-Cz
>>1
> 私、jsは完全な初心者ですので全く理解出来ません。

では、1 つヒント。escape()/unescape() はとっくの昔に廃止されたので、今後これを使っているスクリプトを使用しない方が良い。別のを探そう。



と言うか、ただ『動かない』とだけ言われても困る。最低限、

・どんなスクリプトなのか(『コメント欄』と書いているが、それだけではないはずだ)
・どんな環境なのか
・どんなエラーメッセージが出るのか(あるいは出ないのか)

くらいは書くべき。特に、エラーメッセージは必須だ。こちらでゼロから動作を解析・推測しなければならないとなると、相応の時間をとられるのだから、こっちだって回答しにくいわけで。

3   名前: はな : 2007/05/31(木) 09:40  ID:PUpbzUHQ sub-t1
>>1
自分で参考書等を読みながら少し弄ったのですが、
変わらず作動しなかったので手直しの依頼をしました。
フリーで落ちてたもので改造可と書かれてましたので、
著作権的には無問題です。
>>2
ブログによく付いている名前、URL、コメントの記入欄がある日記等にコメントを返せるモノです。
XHTML 1.0 Strictに埋め込むつもりですが、
他の形式で試しても作動しませんでした。
エラーは出ずに送信ボタンをクリックしても動きません。

4   名前: はな : 2007/05/31(木) 09:40  ID:PUpbzUHQ sub-t1
>>2
escape()/unescape()はencodeURI()/decodeURI()に今書き換えました。
それでも以前と変わらない状況です。

5   名前: 匿名 : 2007/05/31(木) 09:40  ID:mXWCw.HA sub-Cz
おk、少しずつ行こう。

確認 1:正常に動けばどうなると思っているの?

>>0 のソースコードには form 要素が見当たらないから、このままでは送信されるはずがない。仮に、特殊変数 $.. で form 要素を出力しているのだとしても、こちらからそれを確認する術は無い。だから、

確認 2:特殊変数 $.. を全て実際値に置き換えて、ブラウザに渡す段階のソースコードにする。

JavaScript はブログシステム上で動くんじゃない。ブラウザ上で動くんだ。だから、ブラウザに渡すソースコードで確認しないと無意味。とりあえず、こちらがそのままコピペして動作確認できる形で提示してもらえれば、話が早い。

そうすれば、手直しのとっかかりは掴める。後は時間のとれる人が手伝ってくれるだろう。

上記を行うのに、JavaScript の知識の有無は関係ない。結局のところ「どうすれば赤の他人に負担を掛けずに手伝ってもらえるか」ということ。このことは、こちらの要望ではない。貴方が適切な回答を得るために必要なことだ。

6   名前: はな : 2007/05/31(木) 09:40  ID:PUpbzUHQ sub-t1
>>5
ブラウザに渡すソースコードは>>0です。
form要素で何を呼び出せば良いんでしょうか・・?

7   名前: NullPo : 2007/05/31(木) 09:40  ID:8aRrG9eJ sub-.G
>>6
まるでperlのようだけど、これそのままなんですか。

input type="submit"はあるけどform要素がないのでサーバ送信はされない。
onclickイベントはクッキーに書き込む処理くらいしか見当たらない。

もしかしてこれはクッキーに書き込んで一人でニヤニヤするためのスクリプトなんですかね。
とりあえず>>5の確認1には少なくとも答えられるのでは?



このソースコードを修正するより、要求仕様をまとめて一から作ったほうが早いような気がしてきた。

8   名前: はな : 2007/05/31(木) 09:40  ID:PUpbzUHQ sub-t1
>>7
私自身は殆ど弄ってませんので、これがそのままです。
>>5
正常に動きましたら名前欄、URL欄、コメント欄のある
書き込んだ瞬間、即座に表示される
ブログに付いているコメント欄になるはずです。
説明が下手で申し訳ないです。

9   名前: 匿名 : 2007/05/31(木) 09:40  ID:qnouppgv sub-Cz
ああ、私の言い方がマズかったね。

>>6
> ブラウザに渡すソースコードは>>0です。

違うよ。試しに >>0 をそのまんまブラウザで表示させてみなよ。

サーバ上のブログシステムか何かが、>>0 を HTML に変換するんだよ。その変換後の HTML ソースがないと、こちらからは何もできないんだ。

じゃあ、貴方のブラウザで表示させた後、「ソースの表示」で表示されるソースコードを提示して下さい。私は手直しの時間がとれそうにないので遠慮させて頂くが、誰かがやってくれるかもしれない。

10   名前: 匿名 : 2007/05/31(木) 09:40  ID:s5l6SOvI sub-Ds
>1は読んだよね当然。
質問時のご注意(http://www.tagindex.com/bbs/note.html#h201):
”質問にならないような「コードの作成依頼のみ」の投稿はご遠慮ください。(どうしてもという場合には、事情を説明した上でお願いしてみてください) ”
返事はまだ見たいだけど、この時点で答えてもらう資格なし。

掲示板みたいに管理者がいじらない、不特定多数の書き込みが出来る場合、HTMLにperlのような言語を使って編集処理したものをhtmlの「ここに挟んで」ってことをします。「ここに挟んで」の内容を変数といいます。変数は直接入れるのでなく、文字コードがどうとか、これはだめとかいろいろ処理します。そのまま入力したものを移しただけでやってみると、掲示板全体が通りすがりの一存で、簡単に書き変えられるでは困りますよね?はなちゃんわかる?そこにタグを入れてデザインをガラット変えるとか出来るくらいわかるよね。デザインだけじゃないけど。だから、変数で処理するものを間に挟むそれがperl。(cgi/php入門みたいなところの仕組みのページさがしな。)

うどんを食べることにしたとして、手打ちうどんなら、勝ってきたうどんを茹でて出汁で食べるのが、これまで。
もっと挑戦しようとして、小麦粉に水混ぜて練る。でも、わかっていないから、小麦粉間違えた。いくら練ってもできない。が、今。
わかってる人には中力粉を使え、塩入れろとなるけど、はなちゃんはわからない。いま薄力粉でやってる。で、ちゃんと粉使ってます。とわめいている。せっかく教えてもらっても、理解できない。小麦粉は薄力粉しかしらない。だから、右からひねるの?左から?って見当違いの質問をしている。塩なんてみえない。でも、必要なんです。

つまり、教えてもらっても大まかな受け渡し図も理解できていない人が、今、ここで質問を繰り返して何とかなるほど簡単じゃない。で、オススメはCGI入門的なサイトを捜す。掲示板がどんな仕組みで動くかくらいは理解する。レンタルCGIを借りる。これならKENTさんが有名。仕事に使うのに宣伝や、著作表示がいやで、CGI勉強するのも嫌なら、業者に頼む。

ここは作成依頼所ではない。どうしてもというなら理由を書く。それがこの掲示板のルールです。

11   名前: モノ ◆7YMtX/NYmu : 2007/05/31(木) 09:40  ID:yvH4nxSc sub-Cl
>>10
> >1は読んだよね当然。

細かいけど、この掲示板だと>>1じゃなくて>>0ですね。

12   名前: 通行人A : 2007/05/31(木) 09:40  ID:6Z2PWcDy sub-FV
傍観者です。
ここまで話がかみ合わないのは、根本的な勘違いがスレ主さんにあるからではないかと思うのですが、

ひょっとして、「このコードを普通の(X)HTML文書に貼れば、"JavaScript(のみ)によって動作するコメントフォームがつけられる」と思ってません?

これは、(恐らく nicky! という割と有名な)日記CGI上で動作するコードです。
多分、リンクをクリックすることで展開するとかいう感じですかね。
(確かに、このままでも一応コメントフォームらしきものは展開されるんですが…)
なので、普通の(X)HTML文書には使えません


……で、もし「そんなことは当然分かっている、自分はCGI上でのJavaScriptの動作について尋ねている」のでしたら、

1)まず、使っているCGIと、このコードをどこから「拾って」きたかを明確にする。
2)再三言われているように、「CGIで出力された」ソースを提出する。

最低限必要と思われます。

一覧へ戻る