Greasemonkeyの練習
Google Reader上で選択中のエントリのドメインを調べる。もともとニーズ的には社内からショートカットvでviewすると、閲覧禁止サイトとしてblogが開かれてしまうことがあるので、それを前もって防ごう、という意図。
そもそも選択中のエントリである必要ないよね・・・とか思ったけど、とりあえずは無理矢理でも動作する状態になったので記念保存。
XPathって昔から使えたっけ?これ使えれば相当いろいろなものが楽できるので、これを応用して他のものをさっさと作ろうと思う。
// ==UserScript== // @name gr domain checker // @namespace kidd-number5 // @include http://www.google.com/reader/* // ==/UserScript== (function() { document.addEventListener( 'keydown', function(event) { var key = String.fromCharCode(event.keyCode); if (key.toLowerCase() == 'd') { link =getFocusedLink(); span = document.createElement("div"); span.innerHTML= getDomain(link); appendComments(span,'//div[@id="current-entry"]//div[@class="collapsed"]'); } }, false ); function getFocusedLink() { return getStringByXPath('//div[@id="current-entry"]//a[@class="entry-title-link"]/@href'); }; function getStringByXPath(xpath, node) { var node = node || document var doc = node.ownerDocument ? node.ownerDocument : node var str = doc.evaluate(xpath, node, null, XPathResult.STRING_TYPE, null) return (str.stringValue) ? str.stringValue : '' }; function getDomain(url) { url =url.substring(url.lastIndexOf("http")) url =url.replace("%3A",":"); console.info(url); reg =new RegExp("http(s?)://(.*)/"); res =url.match(reg); return res[2].split("/")[0]; }; function appendComments(element,xpath){ var currentEntry = document.evaluate(xpath,document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null ); var currentItem = currentEntry.snapshotItem(0); currentItem.appendChild(element); }; })();