6
30
2010
1

GM 脚本:转换QQ空间的Javascript链接为普通链接

本文来自依云's Blog,转载请注明。

为什么要访问难用的QQ空间我就不说了,相信各Linuxer能够理解。那为什么要把Javascript链接转换成普通链接呢?因为我喜欢用中键去点链接,让它在新标签页中打开,并且还是在后台打开。这样,在列表页面,我可以用鼠标中键选取自己感兴趣的链接,全部打开,选完好基本上第一篇也就加载好了,不需要等待加载。

无奈QQ空间特别喜欢使用Javascript,以至于我以为QQ空间里的文章都没有可以指向它的URL。后来看到QQ空间支持RSS了,才发现原来每篇文章都是有ID的,像这样可以访问:http://QQ号.qzone.qq.com/blog/文章ID。于是,此问题有解!

Firebug查看下就可以知道文章ID如何获取,然后利用强大的GreaseMonkey写个脚本转换之。思路很简单,但做起来还是遇到了点小问题——貌似在页面加载完毕之前脚本就已经执行过了。怎么办呢?我首先想到了延时,但觉得不太好控制。无意中在GreaseMonkey的右键菜单项中看到了“用户脚本命令”一项,遂Google之,获得此文。于是就用这个了,虽说每次要先去点下这个菜单项有点麻烦,但毕竟我QQ空间看得不是很多,而且这比之前要省事不少。好了,贴代码:

// ==UserScript==
// @name           QQ空间链接转换
// @namespace      http://lilydjwg.is-programmer.com/
// @description    将QQ空间链接从Javascript转换到普通链接
// @include        http://*.qzone.qq.com/*
// ==/UserScript==

var changeLinks = function(links){
  for(var i=0, len = links.length; i<len; i++){
    var link = links[i];
    if(link.href == 'javascript:;'){
      var id = link.getAttribute('onclick').match(/\d+/)[0];
      link.href = 'http://' + window.location.host + '/blog/' + id;
      console.log(link.href);
    }
  }
}

var do_it = function(){
  try{
    var links = document.getElementById('tblog').contentDocument.getElementsByClassName('blog_link');
    changeLinks(links);
    var links = document.getElementsByClassName('tx_fix');
    changeLinks(links);
  }catch(e){
    GM_log(e);
  }
}

GM_registerMenuCommand("转换js链接", do_it, '', '', 'j');

点击此处安装

Category: 火狐 | Tags: javascript QQ 火狐 GreaseMonkey 腾讯 | Read Count: 7483
c 说:
Jun 12, 2011 03:45:57 PM

这东西给力啊


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter

部分静态文件存储由又拍云存储提供。 | Theme: Aeros 2.0 by TheBuckmaker.com