[新規投稿] No:958 D:03/02/18 17:01 T:JavaScriptについて N:GETWILD'74 H:[URL][返信] ------------ こんにちは。 JavaScriptの話題はどこに書けばいいんでしょうか? INCMとは関係ないので、こっちにしてみましたが。 自分のサイトではないのですが、どうしても分からないことがありまして。 そもそもの問題はIEのescape関数にあります。 クッキーを送信する時にURLエンコードするのに使ってます。 しかし、この関数はUnicode形式に変換してしまうようなんですね。 Perlでそれを利用しようとすると上手く変換できないんです。 Jcode.pmでやろうとしてもasciiと認識されてダメみたいで。 ならば、JavaScriptでクッキーに送るものを通常のエンコードにしようと 調べていたら下記のページに辿り着きました。 こちら これを参考に実際のページに組み込みましたが、上手く動作してくれません。 frame1.location.hrefの中が「about:blank」なんです。 関数もフォームも参考にしたページとほぼ同じです。 違うのは esval = jsm_frame.location.href.substr(n + 1); のようにインラインフレームに送られた引数の値をesvalに代入してるぐらいで。 私がやっているのは名前を入力してもらって、それをクッキーに保存して 次の訪問時に名前とメッセージや訪問回数などを表示するJavaScriptの改造です。 元のJavaScriptはそのサイトの管理者がどこかから入手したものです。 こちら にテストページをアップしてみました。 JavaScriptには精通してないので、リファレンスを見ながら色々やってます。 お時間があるときで構いませんので、何か分かることがあれば教えてください。 No:959 D:03/02/19 08:31 N:venom ------------ ☆ GETWILD'74 さん > JavaScriptの話題はどこに書けばいいんでしょうか? > INCMとは関係ないので、こっちにしてみましたが。 JavaScript もプログラムなんで、INCM でも良いかも。 INCM も結構、プログラムのことが多いし。 > そもそもの問題はIEのescape関数にあります。 > クッキーを送信する時にURLエンコードするのに使ってます。 > しかし、この関数はUnicode形式に変換してしまうようなんですね。 IE だけのようですが。NN は問題ないみたいです。 Opera はどうなのかな? > これを参考に実際のページに組み込みましたが、上手く動作してくれません。 > frame1.location.hrefの中が「about:blank」なんです。 > 関数もフォームも参考にしたページとほぼ同じです。 > 違うのは > esval = jsm_frame.location.href.substr(n + 1); > のようにインラインフレームに送られた引数の値をesvalに代入してるぐらいで。 frame1.location.href は、インラインフレームの URL なわけですけど、 インラインフレームにソースを指定していないので、「about:blank」で いいと思うんですが。 > 私がやっているのは名前を入力してもらって、それをクッキーに保存して > 次の訪問時に名前とメッセージや訪問回数などを表示するJavaScriptの改造です。 > 元のJavaScriptはそのサイトの管理者がどこかから入手したものです。 もうすでに出来てるんじゃ無いですか? 名前、訪問回数、日付等きちんと読み書きされていますけど。 > こちら > にテストページをアップしてみました。 > JavaScriptには精通してないので、リファレンスを見ながら色々やってます。 > お時間があるときで構いませんので、何か分かることがあれば教えてください。 私も、やったことの無いことなので、正しいかどうかわかりませんが。 No:960 D:03/02/19 13:14 N:GETWILD'74 H:[URL] ------------ ★venomさん >JavaScript もプログラムなんで、INCM でも良いかも。 >INCM も結構、プログラムのことが多いし。 では、次からそうします。 今回は途中で切れるのも何ですので、このまま続けます。 >> そもそもの問題はIEのescape関数にあります。 >> クッキーを送信する時にURLエンコードするのに使ってます。 >> しかし、この関数はUnicode形式に変換してしまうようなんですね。 >IE だけのようですが。NN は問題ないみたいです。 >Opera はどうなのかな? NNは問題ないですね。 OperaもUnicodeになるっぽいです。 >> これを参考に実際のページに組み込みましたが、上手く動作してくれません。 >> frame1.location.hrefの中が「about:blank」なんです。 >frame1.location.href は、インラインフレームの URL なわけですけど、 >インラインフレームにソースを指定していないので、「about:blank」で >いいと思うんですが。 隠しフォームのtargetをインラインフレームに指定して、クッキーに書き込む前に conv1を呼び出してます。 そこで隠しフォームに入力された名前を渡してsubmit()で送信してます。 その時に document.jsm_form.action = location.href; としてるんですが、これではダメなんでしょうか? >もうすでに出来てるんじゃ無いですか? >名前、訪問回数、日付等きちんと読み書きされていますけど。 それはダウンロードしたものなので、最初から出来てるんです。 改造というのはそのスクリプトで書き込まれたクッキーをアクセス解析で 取り出して表示しようというものでして。 そこで問題になったのがUnicode形式に変換されたクッキーだとCGI側で 上手くデコード出来ないってことなんです。 Jcode.pmでもUnicode::Japaneseでも変換できなかったので、JavaScriptの方で 対応しようと思ったんですが、それも上手く行きません。 Operaでは上手く行くようなんですが、unescapeで文字化けするので そっちも直さないといけないみたいですね。 No:961 D:03/02/20 08:32 N:venom ------------ ☆ GETWILD'74 さん > 今回は途中で切れるのも何ですので、このまま続けます。 そうですね。 > 隠しフォームのtargetをインラインフレームに指定して、クッキーに書き込む前に > conv1を呼び出してます。 > そこで隠しフォームに入力された名前を渡してsubmit()で送信してます。 ここは、問題ないと思います。 > その時に > document.jsm_form.action = location.href; > としてるんですが、これではダメなんでしょうか? これは、フォームのアクションに URL( 現在のページ )を指定してるだけなので frame1.location.href の中は「about:blank」でいい筈です。 > >もうすでに出来てるんじゃ無いですか? > >名前、訪問回数、日付等きちんと読み書きされていますけど。 > それはダウンロードしたものなので、最初から出来てるんです。 > 改造というのはそのスクリプトで書き込まれたクッキーをアクセス解析で > 取り出して表示しようというものでして。 なるほど、テストページがすでに改造したものだと思ってました。(笑) > そこで問題になったのがUnicode形式に変換されたクッキーだとCGI側で > 上手くデコード出来ないってことなんです。 > Jcode.pmでもUnicode::Japaneseでも変換できなかったので、JavaScriptの方で > 対応しようと思ったんですが、それも上手く行きません。 > Operaでは上手く行くようなんですが、unescapeで文字化けするので > そっちも直さないといけないみたいですね。 参考になるかどうかわかりませんが こちら とか こちら は、どうでしょうか? No:963 D:03/02/20 12:17 N:GETWILD'74 H:[URL] ------------ ★venomさん >> document.jsm_form.action = location.href; >> としてるんですが、これではダメなんでしょうか? >これは、フォームのアクションに URL( 現在のページ )を指定してるだけなので >frame1.location.href の中は「about:blank」でいい筈です。 frame1.location.hrefの中にURLを引数付きで渡すにはどうしたらいいんでしょう? >なるほど、テストページがすでに改造したものだと思ってました。(笑) 一応改造はしてあるんですよ。 conv1とconv2や隠しフォームとインラインフレームは私が付け足したものです。 >参考になるかどうかわかりませんが >こちら 私のしようとしてるのと逆のことをしてるわけですね。 でも、これだと結局CGI側の対策が必要になりますね。(^^; >こちら 上のも含めてわざわざ調べて頂いてありがとうございます。 Unicode::Japaneseのほうは知ってましたが、改めてご紹介頂いてやはり 私にはこっちかなと思いました。 JavaScriptよりもPerlのほうが得意ですから。 とりあえずCGIのほうで色々やってみます、ありがとうございました。 No:965 D:03/02/21 08:32 N:venom ------------ ☆ GETWILD'74 さん > >> document.jsm_form.action = location.href; > >> としてるんですが、これではダメなんでしょうか? > >これは、フォームのアクションに URL( 現在のページ )を指定してるだけなので > >frame1.location.href の中は「about:blank」でいい筈です。 > frame1.location.hrefの中にURLを引数付きで渡すにはどうしたらいいんでしょう? 引数付きですか? 引数付きになるかわかりませんが、 frame1.location.href に location.href をいれればいいように思いますが。 > >参考になるかどうかわかりませんが > >こちら > 私のしようとしてるのと逆のことをしてるわけですね。 > でも、これだと結局CGI側の対策が必要になりますね。(^^; 読んでて逆だろうなとも思いましたが、何かの参考になればと 紹介してみました。 > >こちら > 上のも含めてわざわざ調べて頂いてありがとうございます。 > Unicode::Japaneseのほうは知ってましたが、改めてご紹介頂いてやはり > 私にはこっちかなと思いました。 こっちは大体あっていましたかね。 > JavaScriptよりもPerlのほうが得意ですから。 > とりあえずCGIのほうで色々やってみます、ありがとうございました。 私もどちらかというと、Perl かなぁ。 大変そうですが、頑張ってくださいね。 No:966 D:03/02/28 10:13 N:GETWILD'74 H:[URL] ------------ ★venomさん 一応、CGIでの対処で解決致しました。 正確にはCGIから出力するHTMLにJavaScriptを埋め込むことで対処しました。 document.writeの引数をクッキーの内容によって変えています。 クッキーが%u\d{4}にマッチした場合にunescapeを使うようにしました。 今のところはこれで上手く動作しているようです。 お付き合い頂いてありがとうございました。 No:967 D:03/03/02 00:32 N:venom ------------ 返事、遅くなりました。 ☆ GETWILD'74 さん > 一応、CGIでの対処で解決致しました。 さすがですね。 > 正確にはCGIから出力するHTMLにJavaScriptを埋め込むことで対処しました。 > document.writeの引数をクッキーの内容によって変えています。 > クッキーが%u\d{4}にマッチした場合にunescapeを使うようにしました。 なるほど、確かにそうすればうまくいきそうですね。 > 今のところはこれで上手く動作しているようです。 > お付き合い頂いてありがとうございました。 いえいえ、あまりお役に立てなかったと思います。 |