修改自動產生分享書籤的按鈕

石頭閒語的作者提供了自動增加分享書籤的簡便寫法,我做了小修改使能運用於Xuite上;也換了Digg圖片,以避免版權問題;另外取得文章標題的方法也做了符合Xuite的調整:

  function addBookmarklets() {
    var u = document.URL;
    if (isXuite && !(/\/\d+/.test(u))) {
      var oTag = findTag('span','titlename');  // 取回span,第1個Node為 a
      u = oTag.childNodes[0].href;  // 本篇文章的URL
    }

    var index = u.indexOf('#');  // 以回應進入時未帶不到資料,因此要trim掉
    if (index > 0) {
      u = u.substring(0, index);
    }
    // title: 標題
    var t = "";
    t = findTag('span','titlename','text');
    t = encodeURIComponent(t);
    t = t.replace(/: 簡睿隨筆 《科技篇》:Xuite日誌:/,"");

    // description: 取出文章內容,最多512個字元
    var d = "";
    var iMaxLength = 512;
    d = findTag('div', 'blogbody','text');
    if (d !== null) {
      var iStopIndex = d.indexOf("(繼續閱讀)");
      d = d.substring(0, iStopIndex > 0? iStopIndex : iMaxLength);
      d = d.replace(/"/g,"'");  // 文章內容裡有雙引號時會造成錯誤
    } 
    if (d === null) {
      d = "";
    }
    var sCategory = getArticleCategory(isXuite);

    var myYahooImg = document.createElement('img');
    with (myYahooImg) {
      src = 'http://b.blog.xuite.net/b/3/a/c/11893557/blog_10351/txt/11331240/1.gif';
      alt = '[+]My Yahoo!'; border = '0';
    }
    var myShareImg = document.createElement('img');
    with (myShareImg) {
      src = 'http://b.blog.xuite.net/b/3/a/c/11893557/blog_10351/txt/11331240/2.gif';
      alt = '[+]My Share'; border = '0';
    }
/*    var hemidemiImg = document.createElement('img');
    with (hemidemiImg) {
      src = 'http://b.blog.xuite.net/b/3/a/c/11893557/blog_10351/txt/11331240/0.gif';
      alt = '[+]HEMIDEMI'; border = '0';
    } */
    var delicioImg = document.createElement('img');
    with (delicioImg) {
      src = 'http://blog.roodo.com/emisjerry/5507ca4d.png';
      alt = '[+]del.icio.us'; border = '0';
    }
    var technoratiImg = document.createElement('img');
    with(technoratiImg) {
      src = 'http://b.blog.xuite.net/b/3/a/c/11893557/blog_10351/txt/11331240/3.gif';
      alt = '[+]technorati fave';
      border = '0';
    }
/*
    var furlImg = document.createElement('img');
    with (furlImg) {
      src = 'http://blog.roodo.com/emisjerry/09034406.png';
      alt = '[+]FURL'; border = '0';
    }

    var _365keyImg = document.createElement('img');
    with(_365keyImg) {
      src = "http://b.blog.xuite.net/b/3/a/c/11893557/blog_10351/txt/10834132/17.gif";
      alt = '[+]365Key 天天網摘';
      border = '0';
    }

    var _funpImg = document.createElement('img');
    with(_funpImg) {
      src = "http://funp.com/images/tools/funpLogo80x15b.gif";
      alt = '[+]funP 推推王';
      border = '0';
    }
*/
    var _udnImg = document.createElement('img');
    with(_udnImg) {
      src = "http://b.blog.xuite.net/b/3/a/c/11893557/blog_10351/txt/12319909/0.gif";
      alt = '[+]UDN 共享書籤';
      border = '0';
    }

    http://b.blog.xuite.net/b/3/a/c/11893557/blog_10351/txt/10834132/17.gif
    var allImg = document.createElement('img');
    with(allImg) {
      src = 'http://b.blog.xuite.net/b/3/a/c/11893557/blog_10351/txt/10406834/2.gif';
      alt = '[+]HemiDemi+Yahoo!+MyShare bookmarks';
      border = '0';
    }

    var bookmarklets=[
    /*[ hemidemiImg,
      false,
      'http://www.hemidemi.com/user_bookmark/new?via=sticker&url='+u+
        '&title='+t+'&tag_string='+sCategory+'&description='+d,
      'HEMiDEMi黑米書籤'
    ], 
    [ _funpImg,
      false,
      'http://funp.com/pages/submit/?popup&url='+u+'&t='+d+'&tags[]='+sCategory,
      'funP推推王'
    ],*/
    [ _udnImg,
      false,
      'http://bookmark.udn.com/add?f_URL='+u+'&f_TITLE='+t+'&f_TAG='+sCategory+'&f_DIGEST='+d,
      'UDN共享書籤'
    ],
    [ myYahooImg,
      false,
      'http://tw.myweb2.search.yahoo.com/myresults/bookmarklet?ei=UTF-8&u='+u+'&tag='+sCategory+'&t='+t+'&d='+d,
      '雅虎分享書籤'
    ],
    [ myShareImg,  // 4000會造成MyShare錯誤
      false,
      'http://myshare.url.com.tw/index.php?func=newurl'+
        '&NewsMaster=1&url='+u+'&tag='+sCategory+'&desc='+t+'&contents='+d.substring(0,500),
      'MyShare網路書籤'
    ],
    [ delicioImg,
      false,
      'http://del.icio.us/post?url='+u+'&tags='+encodeURIComponent(sCategory)+
        '&title='+t+'&notes='+d,
      'del.icio.us美味書籤'
    ],
    [ technoratiImg,
      false,
      'http://technorati.com/faves?sub='+t+'&add='+u,
      'Technotati bookmark'
    ]
/*    [ _365keyImg,
      false,
      'http://www.365key.com/storeit.aspx?t='+t+'&u='+u+'&c='+d,
      '365Key 天天網摘'
    ],*/
/*    [ furlImg,
      false,
      'http://furl.net/storeIt.jsp?&u='+u+'&t='+t,
      'FURL bookmark'
    ],
    [ allImg,
      false,
      '***',
      'HEMiDEMi+Yahoo!+MyShare bookmark'
    ] */
    ];

    var posted = null;
    if (isXuite || isRoodo) {
      posted = findTag('div','posted');
    }

    posted.insertBefore(document.createElement('br'), posted.firstChild);
    //var frame = document.getElementById("frameHemi");
    //posted.insertBefore(frame, posted.firstChild);
    for (var i = bookmarklets.length - 1, a; i >= 0; --i) {
      a = document.createElement('a');
      a.target = '_blank';
      var bk = bookmarklets[i][2];
      //console.log(i + "=" + bk);
      if (bk=='***') {  // for HemiDemi+Yahoo!+MyShare
        a.href = 'javascript:window.open("' +  bookmarklets[0][2]+'"); '+
          'window.open("' + bookmarklets[1][2]+'"); ' +
          'window.open("' + bookmarklets[2][2]+'");';
        //console.log(a.href);
      } else {
        a.href = bk;
      }
      a.title = bookmarklets[i][3];
      a.appendChild(bookmarklets[i][0]);
      if (bookmarklets[i][1]) {
        a.appendChild(document.createTextNode(bookmarklets[i][1]));
      }
      posted.insertBefore(document.createTextNode(' '), posted.firstChild);
      posted.insertBefore(a, posted.firstChild);
    }
    var iframe = createHemiButton(posted);  // 建立frameHemo element
    posted.insertBefore(iframe, posted.firstChild);
    posted.insertBefore(document.createTextNode(' '), posted.childNodes[1]);
    //posted.insertBefore(document.createTextNode(' '), posted.firstChild);
  } //~addBookmarklets

##

您可能也會有興趣的類似文章

簡睿

服務於軟體業的資訊老兵。興趣廣泛,學習力佳,樂於分享所知所學。

您可能也會喜歡…

4 個回應

  1. weboss表示:

    謝謝站長大大的教學文章,不好意思我想請問一下,有沒有將udn書籤按鈕加到 google blog 範本裡的教學呢?

    按鈕的樣式,就如我的blog http://weboss001.blogspot.com/ 哪樣

    (部落格中punp和黑米的按鈕 我已經加到google blog 範本裡了,但udn書籤按鈕 我是在每篇文章中加上去的 ) 謝謝站長

  2. odin表示:

     這則留言是悄悄話。

  3. 遊手好閒的石頭成表示:

    我看到了。
    但在 Xuite 中,第18行的
    if (ds[i].className == ‘main’)
    似乎要改成
    if (ds[i].className == ‘blogbody’)

    才能正確地幫你抓出要傳給書籤系統的說明文字。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *