禺画像]
よく貼るリンクにアイコンが表示されるようにしたら大変なことにw
これは全部私が悪いわけで、本来アイコンを表示するリンクはクラスを別に設定するべきなのですが、それだと昔の記事のリンクまでクラスを書き加えないといけないのでデフォルトにアイコンを設定してしまいました。
分かっていたとは言えこれは酷いw
というわけで、クラスを設定する以外の手段でなんとかすることにしました。
ここから先は
PDFをGoogle docs Viewer経由で開くアイコンを挿入してみた(以下スクリプトの名前を「PDFgd」と略します)を使ってる人にしか関係ない話になります。
最初の画像を少し解説すると、PDFgdで置き換えられたリンクをブログに貼ってブログを表示したら、PDFgdで再度置き換えが発生してアイコンが増えたところに、docs.google.comとadobe.comのfaviconが挿入されてカオス状態になったものですw
それとサイトによっては元のリンクを表すアイコンが変な位置に表示されてしまう
禺画像] のでそれも修正してみました。
このスクリプトは、PDF/PPT/TIFのリンクをGoogle docsで開くように書き換え、書き換え前のリンクをPDFアイコンで表示するものです。参考:
PDFの表示あれこれ
// ==UserScript==
// @name PDF/PPT/TIF viewer with Google docs
// @namespace http://puppet.asablo.jp/blog/2010/03/22/4964699
// @include http://*
// @exclude http://docs.google.com/*
// ==/UserScript==
// Based on script by Koonies (http://d.hatena.ne.jp/Koonies/): http://userscripts.org/scripts/show/59557
(function(){
if (location.href.indexOf("http://docs.google.com/") == -1) {
var l = document.getElementsByTagName("a");
var i = l.length;
while (i--) {
if ((l[i].href.match(/^[^?]+\.(pdf|ppt|tif)$/))
&& (l[i].href.indexOf("http://b.hatena.ne.jp/entry/") == -1)
&& (l[i].className != 'ujspdflk')) {
var logo = document.createElement("img");
logo.src = 'data:image/gif;base64,R0lGODlhEAAQAPMAAACh6P///3BvbtpEQt+Wld5+fNQqJ+PIxu/X1tqwrq49O9doZsfHx6RST4eHh/Dp6SH5BAEAAAAALAAAAAAQABAAAARbEMhJqxQ4a0xF+GDICJMXnsx4nQFSICAJmCFREPF6HgP+ybTQ4JCbsQIGAzEAZCUIhOFDgDCeConAIKkoWEOLxWBBSCgI309hgC3SeANYCJgxKBqOjYwSrVoAEQA7';
logo.border = 0;
logo.style.margin = '0';
logo.style.padding = '0';
var orgpdf = document.createElement("a");
orgpdf.href = l[i].href;
orgpdf.className = 'ujspdflk';
orgpdf.insertBefore(logo, orgpdf.firstChild);
l[i].href = 'http://docs.google.com/viewer?url=' + l[i].href;
l[i].target = '_blank';
l[i].parentNode.insertBefore(orgpdf, l[i].nextSibling);
}
}
}
})();
10.05.01 Firefox 3.5以降用の
高速(querySelector)版もあります。
そもそも元の考え(PDFgdで変換したリンクを貼るということ)が間違っていますので、対処も間違った方法(クラスが「ujspdflk」なら置き換えない)で訂正してます。
あとはブログのCSSで「ujspdflk」のクラスにアイコンを表示しないようにするだけです。
.msg-body a.ujspdflk{background:none;padding:0;}
余計なこと(クラスを指定)するなというなら
if ((l[i].href.match(/^[^?]+\.(pdf|ppt|tif)$/))
&& (l[i].href.indexOf("http://b.hatena.ne.jp/entry/") == -1)
&& (l[i].className != 'ujspdflk')) {
を
if ((l[i].href.match(/^[^?]+\.(pdf|ppt|tif)$/))
&& (l[i].href.indexOf("http://b.hatena.ne.jp/entry/") == -1)) {
に修正して
orgpdf.className = 'ujspdflk';
の行を削除します。
さらに
はてなブックマークにPDFが登録されると困ったりの対処が不要なら
if ((l[i].href.match(/^[^?]+\.(pdf|ppt|tif)$/))
&& (l[i].href.indexOf("http://b.hatena.ne.jp/entry/") == -1)) {
を
セコメントをする