[Home|Reload]
Cnt:0210494
雑談
[新規投稿]

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を使うようにしました。

なるほど、確かにそうすればうまくいきそうですね。

> 今のところはこれで上手く動作しているようです。
> お付き合い頂いてありがとうございました。

いえいえ、あまりお役に立てなかったと思います。

[Back] [Next]

No. 
Pass 

VenomBBS