枕を欹てて聴く

香炉峰の雪は簾を撥げて看る

API Checkについて

id:you999 さんの疑問に.
GM ver 0.8.2からGM_openInTabはデフォルト挙動, つまりconfigのbrowser.tabs.loadInBackgroundの値に沿った開き方をするように変更されました.(手前味噌のものでよければこちら参照Greasemonkey ver 0.82解説 - 枕を欹てて聴く)
よってfocusが移るようならこの値をtrueにする必要があります.

先日, API Checkすごいよとか書いといてなんですが, これ, つまりは発生由来がweb上のscriptかどうかをcheckしているので, 例えば, いままでLDR上で書いていた

var win = unsafeWindow;
win.Keybind.add('J', function(){
  var item = win.get_active_item(true);
  if (!item) return;
  GM_openInTab(item.link);
  win.Control.go_next();
});

なんていうscriptが当然のように動かなくなります. これは登録functionが実際にはLDRのjs上から実行されているため, 由来(Components.stack.filenameの先頭)がweb上scriptになってるんですね.

で, せっかくのAPI Checkなんですが,

var win = unsafeWindow;
win.Keybind.add('J', function(){
  var item = win.get_active_item(true);
  if (!item) return;
  setTimeout(GM_openInTab, 0, item.link);
  win.Control.go_next();
});

ってかいたら動きます. setTimeoutによって, GM_openInTabのstack.filenameが切り替わっているからです..
ldr_keyhack_v.user.js が突然動かなくなったなどで困ってらっしゃる方はどうぞ.