amazonのunsafeWindow.asinがいつの間にかとれなくなっていた
こまった。ごりごり……
// ==UserScript== // @name amazon short url // @namespace http://kgr.s56.xrea.com/userscripts/ // @include http://*amazon.*/* // ==/UserScript== (function(b) { // String.prototype.trim = function() this.replace(/^\s+|\s+$/, ''); const ns_xhtml = 'http://www.w3.org/1999/xhtml'; function $T(data) document.createTextNode(data); function $X(xpath, context, ns) { if (!context) context = document; var expr = document.createExpression(xpath, function() document.contentType === 'text/html' ? '' : ns || ns_xhtml); var result = expr.evaluate(context, XPathResult.ANY_TYPE, null); switch (result.resultType) { case XPathResult.STRING_TYPE : return result.stringValue; case XPathResult.NUMBER_TYPE : return result.numberValue; case XPathResult.BOOLEAN_TYPE: return result.booleanValue; case XPathResult.UNORDERED_NODE_ITERATOR_TYPE: result = expr.evaluate(context, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var a = [], i = 0, l = result.snapshotLength; i < l; a.push(result.snapshotItem(i++))); return a; } } var node = $X('/html/body/table/tbody/tr/td[@class="bucket"]/div[@class="content"]/ul', b).shift(); if (!node) return; var asin = (/(?:ASIN|ISBN-10): (\w+)/i.exec(node.textContent) || [])[1]; if (asin) b.insertBefore($T('http://www.amazon.co.jp/dp/' + asin + '/'), b.firstChild); })(document.body);