PDFをGoogle docs経由で開くユーザスクリプトの微調整
2010-03-22


禺画像]
よく貼るリンクにアイコンが表示されるようにしたら大変なことに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)) {      

続きを読む

[Firefox]
[Add-ons]
[Script]
[CSS]

コメント(全2件)
コメントをする


記事を書く
powered by ASAHIネット