由々識の気まぐれ日記

JavaScriptプログラマ「由々識」が時々書くするブログ。 内容はJavaScript全般、Sleipnir関係。

Sleipnir.API::IsBusy の不具合 その2

Sleipnir.API::IsBusy 新たな不具合が発見されました。
きっかけは 2ch のスレでの以下のレスです。
353 :名無し~3.EXE :2008/03/31(月) 19:45:20 ID:hh1zt/8R
>>337
これはマダ入れてないからわからないが
RCになって、また特定のサイトで重くなる症状復活したな。
ポイントタウン。
https://www.pointtown.com/
テスト版で軽くなって喜んでたのに。

>読み込みが完了する前に API::IsBusy() が false になっている

これアクティブタブだと問題ないが、それ以外のタブでだめ。
具体的にはAPI::NewWindowで開いた別タブでは
読み込みが完了する前に API::IsBusy() が false を返すということ。


重要なのは赤文字の部分です。
書き込みから察するに、非アクティブタブを新しく開いた時、Sleipnir.API::IsBusyfalse を返すみたいです。
というわけで、この不具合を再現させる最小のスクリプトを書いてみましょう。
//------------------------------------
// ScriptTest_sample02.js
//------------------------------------

var pnir, id, doc, window;

pnir = new ActiveXObject("Sleipnir.API");
id = pnir.NewWindow('http\:\/\/www\.yahoo\.co\.jp\/', false);
doc = pnir.GetDocumentObject(id);
window = pnir.GetWindowObject(id);

do {
     pnir.SearchBarString = (pnir.IsBusy(id)) ? '読み込み中' : '完了!';
     WScript.Sleep(10);
} while(!pnir.CtrlDown);
pnir.SearchBarString = '';
このスクリプトは実行すると、新しいタブを非アクティブで開いて Yahoo! の TOP ページを表示し、
IsBusy を使って、true なら「読み込み中」。false なら「完了!」と検索バーに表示し続けます。
表示を止めるには Ctrl キーを押します。
Ctrl キーを押さないとスクリプトが終了しないので、スクリプトをもう一度実行する際は Ctrl キーを押してスクリプトを終了させるのを忘れないでください。

それでは実行してみましょう。
    ・
    ・
    ・
実行してみると、新しいタブが非アクティブで開き、
検索バーに「完了!」と一瞬表示された後に「読み込み中」にかわり、しばらく後に再度「完了!」と表示されました。
実行した際に「完了!」と表示された時間はあくまでほんの一瞬でしたが、
読み込み完了を待つプログラムを書いていた際には致命的な不具合になります。
これは明らかに不具合ですね。
・・・と、あれ? そういえばこの不具合を以前にも見た記憶が・・・。
そうそう思い出しました。以前に Sleipnir Script BBS でこの現象を相談されて、回答した記憶があります。
そうとう前だったので忘れていました。
とすると、この不具合は結構前から存在することになりますね。
とにかく、スクリプト製作者としてはスクリプト関係の不具合は早急に修正していただきたいです。
よろしくお願いします。(>Fenrir の中の人達)


(2008/04/01 08:30 追記)
上記不具合は、
既に1つ以上ページが開かれている状態で発生するようです。
「about:blank」1つだけの時は再現しませんでした。


(2008/04/03 21:50 追記)
以前、IsBusy の不具合について質問に答えた書き込みを探し当てました。

Sleipnir Script BBS|HTMLタグのデータの取り込み(2.40版)

ページの読み込みを待つコードを書く場合には、
var pnir = new ActiveXObject("Sleipnir.API");
var nid = pnir.NewWindow('http\:\/\/www\.yahoo\.co\.jp\/',false);
while(pnir.IsBusy(nid) || pnir.GetDocumentObject(nid) == null){
     WScript.Sleep(100);
}
のように書けば、IsBusy の不具合をカバーできると書いてあります。

で、実は以前この不具合を泰幸氏(社長)に報告したことがあったのです。
そうしたら、「IsBusy に関しては修正しました。」とレスがあったので、
てっきりこの問題は修正されたものと思い、忘れていました。
以下はその情報ソースです。

UserAction (プラグイン) - Fenrir User Community

ちなみに、上記ページの私の発言がつい先ほど編集されていますが、これは参照ページがリンク切れになっていたのを修正したものです。

Sleipnir 2.6.2 test20(リリース候補版)リリース

Sleipnir の最新テスト版、test20(リリース候補版) が 2ch でリリースされました。
今回の test20 もリリース候補版のため、test1 から test19 の修正が全て含まれています。
故に、配布ファイルを解凍して即使用可能です。


<更新履歴>
[仕様変更]
- ウィンドウ一覧パネルの描画方法を調整した。(NX)

[不具合修正]
- 一部環境で、スキン切り替え直後にカスタム検索エンジンボタンが描画されないことがあった不具合を修正した。(タクヤ)
- Windows 9x 環境でスキンを切り替えたとき、強制終了することがあった不具合を修正した。(タクヤ,たば)
今回の修正は、ウィンドウ一覧パネルとスキン切り替え時の不具合の修正です。
まず、「ウィンドウ一覧パネルの描画方法を調整」ですが、
当方の環境で旧版(Sleipnir 2.6.2 正式版)と比較を行いましたが、違いがわかりませんでした。(´Д`;)
もしかしたら、内部的なものなのかもしれません。
それとも、特定動作時の処理が速くなっているとか。
残念ながら、当方ではそれを特定することはできませんでした。

次に、「スキン切り替え時の不具合」の修正が2件ありますが、これらも当方の環境で旧版にて不具合を確認を試みたのですが、再現しませんでした。

というわけで、今回のテスト版紹介はこれにて終了です。
・・・と思ったのですが、更新履歴の最後の名前に「たば」とあるのを発見しました。
私の記憶が確かならば初めて見る名前です。
タブブラウザ Sleipnir オンラインデータベース(用語辞典)
にも載っていません。
きたの さんは何も言っていませんが、いったい何者なのでしょうか?
もし新人さんなら、次の正式版公開時の Developer's Blog の更新は、お披露目も兼ねてこの方にやっていただきたいですね。
何はともあれ、どんどん大きくなっていく Fenrir 開発陣。
Sleipnir の今後の成長に大期待です。

Sleipnir.API::SetSecurity の不具合

2ch のスレで以下の書き込みを見つけました。
29 :名無し~3.EXE :2008/03/28(金) 04:03:22 ID:qukSbPPB
読み込みが完了する前に API::IsBusy() が false になっている

この不具合やっとこさ修正したな
修正したと書いておきながらできてなかったが。
とにかくご苦労。

about:blankだけの状態からAPI::NewWindowでナビゲートし
デフォルトセキュリティから
API::SetSecurityでセキュリティ変更しようとすると
処理が止まる
バグはいつになったら修正するんだ?

重要なのは赤文字の部分です。
というわけで、当方の環境でも再現するか実際に検証してみました。
まずは不具合を再現させる最小のスクリプトを書いてみましょう。
//------------------------------------
// ScriptTest_sample01.js
//------------------------------------

pnir = new ActiveXObject("Sleipnir.API");
id = pnir.NewWindow('http\:\/\/www\.yahoo\.co\.jp\/', true);
pnir.SetSecurity(id, true, true, true, false, true, true, true);
これは実行すると、新しいタブで Yahoo! の TOP ページを開き、セキュリティを「低」に変更します。
Sleipnir を about:blank のタブのみの状態にしてこのスクリプトを実行し、
どうなるか見てみましょう。
というわけでいざ実行!
↓結果はこうなりました。
NewWindow と SetSecurity の不具合のスクリーンショット
アドレスバーの表示が「http://www.yahoo.co.jp/」になり、セキュリティゾーンの表示も Yahoo! の TOP ページのものになりましたが、
肝心の Yahoo! の TOP ページが表示されません。
ためしにこの状態で Sleipnir.API::URL の値を取得してみました。
すると、「http://www.yahoo.co.jp/」が返ってきました。
次に document.URL の値も取得してみましょう。
結果は「about:blank」でした。
どうやら、document.URL は正しい値を返すみたいですね。
さらに、Proxomitron のログも見てみましょう。
+++GET 4069+++
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/x-shockwave-flash, */*
Accept-Language: ja
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)
Host: www.yahoo.co.jp
Cookie: B=0ecudo53upr9d&b=3&s=il
Connection: keep-alive


+++RESP 4069+++
HTTP/1.1 200 OK
Date: Fri, 28 Mar 2008 14:08:59 GMT
P3P: policyref="http://privacy.yahoo.co.jp/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"
Vary: User-Agent
Expires: -1
Pragma: no-cache
Cache-Control: no-cache
X-XRDS-Location: http://open.login.yahoo.co.jp/openid20/www.yahoo.co.jp/xrds
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=utf-8

+++CLOSE 4069+++
一応、Yahoo! の TOP ページを取りに行って、無事受信してますね。
しかし、他の画像ファイル等のリクエストは送信されていません。
Yahoo! の TOP ページを無事受信はしても、HTML は解釈されていないようです。
どうやら、裏でページが読み込まれているということもなく、ページの表示そのものが停止してしまったと言ったところでしょうか。
これは明らかに不具合ですね。
ずいぶんと前からある不具合のようなので、早めに修正していただけたら幸いです。(>Fenrir の中の人達)

ShootingStar Panel Version 0.0.8 α版公開

ShootingStar Panel の Version 0.0.8 が公開されました。


<変更点>
- ダウンロード完了時に Sleipnir を前面に表示したり音を鳴らしたりすることができる機能を追加。
- リンクをドロップした時アイテムが正常に登録できないことがあった不具合を修正。
- 拡張子を監視するオプションを変更したとき、Sleipnir を再起動するまで設定が反映されていなかった不具合を修正。
それでは1つずつ検証していきます。


- ダウンロード完了時に Sleipnir を前面に表示したり音を鳴らしたりすることができる機能を追加。
音が鳴ることは確認しました。
ただ、最前面の方は Sleipnir のタスクバーボタンがオレンジ色に点滅するだけで最前面にはなりませんでした。
たしかこれは WindowsXP 以降の仕様だったような気がします。
あと、Sleipnir を最小化状態にしてあった場合は、ダウンロードが完了してもウィンドウが元のサイズに戻らず、タスクバーボタンも点滅しませんでした。
それからこれは要望ですが、
1つのアイテムのダウンロードが完了した時に通知するのではなく、
アイテムのダウンロードが完了した時に他に「待機」の状態のアイテムが無い時のみ通知することはできないでしょうか。
サイズの小さいファイルを大量にダウンロードする際に1つずつ音が鳴るのはうるさいです。
あと、「音を鳴らす」のと「最前面にする」を両方設定したいので、これらのオプションを分けてほしいです。
そうすると、音が鳴ってタスクバーボタンも点滅しますので。


- リンクをドロップした時アイテムが正常に登録できないことがあった不具合を修正。
正常にアイテム追加できました。
ただ、リファラが URI と同じになってしまっているので、
アクティブなウィンドウのアクティブなフレームの URI を取得してリファラに設定するようにしてほしいです。
また、ドメイン越えの問題でアクティブなフレームの URI が取得できない場合はウィンドウの URI を取得する感じで。


- 拡張子を監視するオプションを変更したとき、Sleipnir を再起動するまで設定が反映されていなかった不具合を修正。
え〜と、オプションの変更が効かなくなりました。
といいますか、「ダウンロードを自動的に開始する」を有効にすると同オプションも有効になり、
「ダウンロードを自動的に開始する」を無効にすると同オプションも無効になりました。


以上です。
D&Dによるアイテム追加も可能になって、日々着実に進化していますね。
この先の成長がとても楽しみです。

Sleipnir 2.6.2 test18& test19(リリース候補版)リリース

Sleipnir の最新テスト版、test18test19(リリース候補版) が 2ch でリリースされました。
今までのテスト版は Sleipnir 2.6.2 に test1 から順番に上書きしなければいけませんでしたが、
今回の test19 はリリース候補版のため、test1 から test18 の修正が全て含まれています。
故に、配布ファイルを解凍して即使用可能です。


<更新履歴>
test18
もっさり感を修正しました。
test17 で、お気に入りのフォルダ開閉が重たく感じられるようになった方は
試していただけるとうれしいです。

ご迷惑おかけしてすみませんでした。。

[仕様変更]
- 起動時にプラグインのロードに失敗したとき、日本語 OS で使用しているときはメッセージを
 日本語で表示できるよう変更した。(RAPT)

[不具合修正]
- パネルのツリーコントロールの表示が遅くなっていた不具合を修正した。(NX)
test19(リリース候補版)
test1 から test18 を1つにまとめただけで、追加修正された点は無し。
今回の主な修正は、前回の修正で発生したエクスプローラバーのパネルのフォルダ開閉速度問題です。
私の環境で試してみたところ、以前のようにキビキビ動くようになりました。
NX さん、お疲れ様です。

あと、test 版とは直接関係ありませんが、
火曜日頃から タブブラウザ Sleipnir オンラインデータベース の編集ができなくなっていた問題が修正されました。
Sleipnir の情報をユーザーが管理する大切なサイトなので、修正されて本当に良かったです。
みなみさん、お疲れさまでした。


さて、今回はリリース候補版ということで、正式版はもう間近のようです。
今期のテスト版には API の修正&追加も含まれているので、
正式版が公開された際には、スクリプト製作者として新作などの開発で忙しくなりそうです。
念のため言っておきますが、私はブロガーである前にスクリプト製作者であり、
本来はそちらがメインなのですよ。
最近はメインであるスクリプト配布サイトよりもブログの方がアクセス数が多くてちょっと複雑な気分ですが・・・。(苦笑)
まぁ、こちらの方が更新頻度が多いからでしょうね。

 | HOME |  次のページ »

Sleipnirスクリプトをお探しのかたはこちらへどうぞ。

Yuyu's Digital Lab.

プロフィール

由々識

作者:由々識

JavaScriptプログラマの由々識です。
主にSleipnirスクリプトを書いています。

RSS 1.0

カレンダー

02 | 2008-03 | 04
S M T W T F S
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -

アーカイブ

カテゴリー

最新投稿

最新コメント

トラックバック

ツール

あわせて読みたい
この日記のはてなブックマーク数

DTIブログポータルへ
このブログを通報
Report Abuse
利用規約