livedoorReaderの「全て読んだことにする」をキーボードで実行
livedoor Readerの「全て読んだことにする」をKeyConfigを使ったショートカットキーで実行できるようになった。以前から何度も挑戦していたもの。
コードは以下
var doc = window.getBrowser().contentDocument; var elem = doc.getElementById('menu_button'); var event = doc.createEvent('MouseEvents'); //メニューオープン event.initEvent('mousedown',true,true); elem.dispatchEvent(event); //メニュークリック var elems = doc.evaluate(".//span/text()[self::text()='全て読んだことにする']", doc, null, 7, null); event.initEvent('mouseup', true, true); elems.snapshotItem(0).dispatchEvent(event); //メニュー閉じる var elem = doc.getElementById('keyhelp_button'); event.initEvent('click', true, true); elem.dispatchEvent(event); elem.dispatchEvent(event);
一度メニューをオープンしてからXPathを使う、ということが全然思いつかなかった。
上記のやり方に気づいたあとも、clickでは動作せず、mousedownやmouseupなどを使ったりと色々手間取った。
さらに、「全て既読に」を実行できるようになったあとも、メニューが閉じなくてかなり手間取ったけど、違う場所を2回クリックすることでようやく閉じるようになった。満足。