追記 2007年12月17日17時51分
適宜追記はしているつもりですが、このエントリはコメント欄も併せてお読み下さい。
SeaHorse (1) – みなさんのお勧めは? - (フェンリル | デベロッパーズブログ)
に掲載されているスクリプト
while (_window.busy) { sleipnir.Sleep(10); }
って記述必要なのかな?
僕の認識だとSeaHorseはページ読み込み完了後に実行されるはず。
上の記述って「ページ読み込み完了まで待つ」って意味あいですよね?
追記 2007年12月17日17時51分
引用元で修正されました。
あとSleep() メソッドっていつの間に使えるようになっただろう。
WSHスクリプトの頃は使えてたけどSelipnirScriptになってからは
全体がフリーズするようになったと思うんだけど。
サンプルに使われてるスクリプトってわざわざ
// @type SleipnirScript
付けずに 普通のJavaScriptでいい気もする。
気になったのでためしてみた。
while.... の部分
あってもなくても問題なく動いた。
// @type SleipnirScript
こちらも // @type SleipnirScriptの記述を削除して、_document → document と訂正すればOK。
ただし、当然ながらSleipnirScriptを使っている部分は削除しないと動きませんので。
面倒だからwhile・・・ の部分丸ごとカットする必要があります。
Sleepメソッド
全体がフリーズする時っていうのは
var pnir = new ActiveXObject("Sleipnir.API"); var id = pnir.GetDocumentID(pnir.ActibeIndex); var document = pnir.GetDocumentObject(id); while(pnir.IsBusy(id)){ sleipnir.sleep(10); }
みたいな書き方をしてた時だったような気がする。
while文の条件部分が今回のと違う。
それで気づいたんだけど
while (_window.busy) {
_window.busyってなんだ? 見たことない。IHTMLWindwo2のなんかなんだろうなぁ。調べたけど見つけられなかった orz
たぶんこれを使えばSleipnir本体を固まらせずに読み込み待ちとかできるんだろう。
追記 2007年12月17日17時51分
busy自体はundefinedなため sleipnir.sleep(10); 実行されていない模様。
だけど、最近このSleepの有効なシーンにでくわさなくなったなぁ。スクリプトを書いてないだけですけど。
なんかおかしいことにきづいた。
Developer's Blogにあるスクリプトでは
_document.title = '<謎>' + _document.title + '<ですよ>';
タイトルを書き換えるように書かれているのに
僕の環境 IE7では書き換えられていなかった。
IE6の環境で見てみると書き換えられている。
検証したスクリプト
// ==UserScript== // @name NazoSample01 // @description SeaHorse Sample 01 // @include http://www.fenrir.co.jp/blog/ // @type SleipnirScript // ==/UserScript== if (document != null) { var hoge= '<謎>' + document.title + '<ですよ>'; alert(hoge); document.title = hoge; for ( var i = 0; i < document.styleSheets.length; i++ ) document.styleSheets[i].disabled = true; }
何でだろ?
追記 2007年12月17日17時51分
僕の設定のせいでした。
Sleipnirのメニュー>表示>タイトルの変更を禁止
この項目にチェックが入っていたため動作していませんでした。
ついでに上記スクリプトではSleipnirScriptとtype宣言してるのに
documentがエラーを出さずに使えるのだろう?
追記 2007年12月17日17時51分
グローバル変数として _window が宣言されていて
documentはその _window のプロパティだからだそうです。
謎が多い。謎の人が書いたスクリプトだからか?
まとめ
謎の人は謎だらけ。
追記 2007年12月17日17時51分
名前だけです(笑)