[#39464] Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

25 messages 2004/04/01
[#39608] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — pegacorn@... 2004/05/02

遅い反応&File.fnmatchは使った事ない&ruby-devの方では

[#39609] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — pegacorn@... 2004/05/02

File.fnmatch(と Dir.glob)をちょっと使ってみたのですが、

[#39610] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/05/02

山本です。

[#39611] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — matz@... (Yukihiro Matsumoto) 2004/05/02

まつもと ゆきひろです

[#39613] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — pegacorn@... 2004/05/02

From: matz@ruby-lang.org (Yukihiro Matsumoto)

[#39616] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — matz@... (Yukihiro Matsumoto) 2004/05/02

まつもと ゆきひろです

[#39620] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — pegacorn@... 2004/05/03

From: matz@ruby-lang.org (Yukihiro Matsumoto)

[#39621] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — matz@... (Yukihiro Matsumoto) 2004/05/03

まつもと ゆきひろです

[#39622] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — pegacorn@... 2004/05/03

From: matz@ruby-lang.org (Yukihiro Matsumoto)

[ruby-list:39605] Re: 気象庁の... Re: uriってどう使うんでしょうか

From: yac <yac@...>
Date: 2004-04-27 15:16:12 UTC
List: ruby-list #39605
岡です。
> OSがMeだとうまくデータを取得できるのですが、XPでは、取得できません。
> 調べてみるとXPでは、次のデータが送られてきます。
> 両方ともIE6を使っているのですが、なぜでしょうか?
確認ですが、「JavaScriptが予想と違うので中止」はIEが送ってきてるデータで
はないのはお分かりですよね?
74行目付近で、書き換えようと思ってたJavaScriptが予想と違っていたので、処
理をとめただけです。

以下の部分はscript_str_arrの738番目が"window.open"を含む処理だったら、
"window.location.href = loc;"に書き換える処理です。
-------------------
if script_str_arr[738] =~ /window\.open/
  # JavaScriptを書き換える
  script_str_arr[738] = "\t\twindow.location.href = loc;"
  script_tag.raw.text = script_str_arr.join("\n")
else
  puts "JavaScriptが予想と違うので中止"
  exit
end
--------------------
JavaScriptを書き換えないと、検索ボタンをクリックした時に別のウィンドウに
気象データが表示されてしまうため、IEを指すWIN32OLEオブジェクトからデータ
が取れません。"window.location.href = loc;"に書き換えてしまえば、同じ
ウィンドウ内でのページ移動となるため、データが取得できるわけです。

Meだとちゃんと取得できるけど、XPでは"JavaScriptが予想と違うので中止"と
なってしまうのは、MEの場合はscript_str_arr[738]が"window.open(loc, whnd,
style);"だけど、XPの場合はそうじゃないからじゃないでしょうか。

「#確認用出力」の部分を以下のように書き換えてみてください。
さすがに、iを使ったループは何なので、イテレータに書き換えています。
番号付きで、JavaScriptの部分を書き出しているわけです。
----------------------------
#確認用出力
script_str_arr.each_with_index {|script_str,index|
  puts "#{sprintf('%03d',index)}:#{script_str}"
}
---------------------------
MeとXPでは気象庁のWebサーバが返すJavaScriptが微妙に違うのかも。
ちなみに、私のPC(WinXP)では738->736に変更しないとだめでした。

で、どうやって直せばいいかですが、どうせIEを使ってページを移動していくス
クリプトは、すべて決め打ちの世界ですから、以下のような方法でいいんじゃな
いですかね。
----------------------------------
if script_str_arr[738] =~ /window\.open/
  replace_index = 738
elsif script_str_arr[736] =~ /window\.open/
  replace_index = 736
else
  puts "JavaScriptが予想と違うので中止"
  exit
end
# JavaScriptを書き換える
script_str_arr[replace_index] = "\t\twindow.location.href = loc;"
script_tag.raw.text = script_str_arr.join("\n")
-----------------------------------
要は、JavaScriptの736か738番目がwindows.open(xxx)だったら、書き換えてし
まうという安易な方法です。
ですから、WebページのJavaScriptがちょっと変更されただけで動かなくなります。

/OKA


In This Thread