ä¿®æ£VeryCD在å¯ç”¨AdBlock Plus的情况下的版é¢æ··ä¹±é—®é¢˜çš„脚本
VeryCD是个ä¸é”™çš„网站,除了在æ¯ä¸ªé¡µé¢ä¸Šé¢å‡ºçŽ°çš„flash广告(è§ä¸‹å›¾ï¼‰ã€‚当然我也知é“VeryCDç»´æŒç”Ÿå˜åŸºæœ¬ä¸Šè¦é 广告,但是ç»å¸¸æžæ»æˆ‘æµè§ˆå™¨çš„flash广告,我是ä¸å¾—已把它过滤掉的。
Firefox对于广告的解决方案当然是AdBlock Plus。这个æ’件å¯ä»¥æŒ‰ç…§é€šé…符或者æ£åˆ™è¡¨è¾¾å¼æ¥å°é”å¹¿å‘Šã€‚å¦‚æžœä½ ä¸æ‡‚通é…符或者æ£åˆ™è¡¨è¾¾å¼ï¼Œç›´æŽ¥ç”¨é¼ æ ‡ç‚¹ç‚¹åŸºæœ¬ä¸Šä¹Ÿæ˜¯å¯ä»¥è§£å†³é—®é¢˜çš„。通过在其ä¸æ·»åŠ 一æ¡è§„则å°é” http://222.37.134.*/*.htm*,顺利达到了å°é”VeryCD上é¢çš„flash广告的目的。
但是éšä¹‹è€Œæ¥çš„é—®é¢˜æ˜¯ï¼Œå› ä¸ºè¿‡æ»¤æŽ‰äº†ä¸€ä¸ªiframe,整个页é¢å¸ƒå±€å°±æœ‰äº†ä¸€äº›é—®é¢˜ï¼Œèµ„æºè¯¦ç»†ä¿¡æ¯å› ä¸ºå¸ƒå±€çš„ç¼˜æ•…æ— æ³•æ˜¾ç¤ºï¼ˆè§ä¸‹å›¾ï¼‰ã€‚
为了能够让它显示出æ¥ï¼Œåªå¥½å¦å¤–å†æ‰“一层补ä¸ã€‚这次用Greasemonkeyï¼Œè®©å®ƒåœ¨åŠ è½½VeryCD页é¢çš„时候在原本显示广告的地方显示å¦å¤–一个东西æ¥å 个ä½ç½®ï¼Œè‡ªç„¶å°±èƒ½å¤Ÿè®©è¯¦ç»†ä¿¡æ¯éƒ¨åˆ†æ˜¾ç¤ºäº†ã€‚
åœ¨è¿™é‡Œæ˜¾ç¤ºä»€ä¹ˆå‘¢ï¼Ÿçœ‹äº†å‡ ä¸ªVeryCD页é¢ä¹‹åŽï¼Œå‘现大多数的页é¢ä¸Šé¢åœ¨ç®€ä»‹éƒ¨åˆ†éƒ½æœ‰è‡³å°‘一幅图片。按ç†è¯´æŠŠç¬¬ä¸€å‰¯å›¾ç‰‡æŒ‰æ¯”例缩å°æ”¾åœ¨å…¶ä¸åº”该å¯ä»¥å§ã€‚最åŽç»“æžœè§ä¸‹å›¾ï¼š
最åŽè´´Greasemonkey脚本的代ç 。请将其拷è´åˆ°è®°äº‹æœ¬ä¿å˜ä¸ºâ€œæ‰€æœ‰æ–‡ä»¶â€ï¼Œæ–‡ä»¶å选择.user.js结æŸã€‚ä¿å˜åŽæ‹–动到Firefox(事先需è¦å®‰è£…了Greasemonkey),确定å³å¯å®‰è£…。
== 代ç 开始,请ä¸è¦æ‹·è´è¿™ä¸€è¡Œ ==
// ==UserScript==
// @name          Re-format VeryCD item detail
// @namespace     http://ftofficer.spaces.live.com
// @description   Re-format VeryCD item detail
// @include       http://www.verycd.com/topics/*
// ==/UserScript==
function findFirstImg() {
 var paras = document.getElementsByTagName(‘p’);
 for (var i=0; i<paras.length; ++i) {
   var p = paras[i];
   if ( p.getAttribute(‘class’) == ‘inner_content’) {
     var imgs = p.getElementsByTagName(‘img’);
     if ( imgs && imgs.length > 0 )
       return imgs[0];
   }
 }
Â
 return null;
}
function getScale(imgWidth, imgHeight, divWidth, divHeight) {
 var wScale = divWidth * 1. / imgWidth;
 var hScale = divHeight * 1. / imgHeight;
Â
 if ( wScale > 1. && hScale > 1. ) {
   return 1.;
 }
Â
 return wScale < hScale ? wScale : hScale;
}
function fixupVeryCDDetailPage() {
 var moreInfo = document.getElementById(‘moreInfo’);
 if ( moreInfo ) {
   var frame = document.createElement(‘div’);
   frame.setAttribute(‘class’, ‘Banner1’);
   frame.width = 300;
   frame.height = 250;
   firstImg = findFirstImg();
   if ( firstImg ) {
     var img = document.createElement(‘img’);
     img.src = firstImg.src;
     var imgScale = getScale(img.width, img.height, frame.width, frame.height);
     img.width = Math.floor(img.width * imgScale);
     img.height = Math.floor(img.height * imgScale);
     frame.appendChild(img);
   }
  Â
   if ( moreInfo.parentNode ) {
     moreInfo.parentNode.insertBefore(frame, moreInfo);
   }
 }
}
fixupVeryCDDetailPage();
== 代ç 结æŸï¼Œè¯·ä¸è¦æ‹·è´è¿™ä¸€è¡Œ ==