2014年12月24日 星期三

Chrome Extensions的script injection


不知怎地GMail突然不能透過POP3收公司mail,測了一下Pchome及Yahoo卻可正常收公司信,為了統一在GMail收信只好對pchome web mail"注射"一下...

程式碼如下:
  • manifest.json 設定檔讓Chrome知道該何時啟動extension功能

{
   "content_scripts": [ {
      "js": [ "inject.js" ],
      "matches": [ "*://mail.pchome.com.tw/mailbox/*" ]
   } ],
   "description": "在pchome web mail收外部信,讓Gmail™可以收得到來自pchome 收到的外部信件。",
   "icons": {
      "128": "icon.png"
   },
   "manifest_version": 2,
   "name": "pchome收外部信",
   "short_name": "Auto sync",
   "update_url": "http://howard-xr1200.blogspot.com",
   "version": "1"
}

重點在content_scripts這段,js定義要執行的script檔名,matches比對載入頁面的url,符合才把script注入頁面。

  • inject.js 對pchome動手腳的 script


triggerInbox = function() {//取外部郵件
  var obj = document.getElementsByTagName("a"); //找到 pchome web mail 頁面中所有連結TAG<A>
  for (var i = 0; i < obj.length; i++) {
    if (obj[i].innerText.indexOf("howard_elinx") > -1) { //找到自己建立在 pchome web mail裡的收外部信件連結(howard_elinx)
      location.href = obj[i].href; //重新載入收外部信連結
      break;
    }
  }
};

document.onreadystatechange = function() {//頁面載完狀態更新
if (document.readyState == 'complete') {//狀態完成時
setTimeout(triggerInbox, 5 * 60 * 1000); //設定五分鐘後取外部郵件
  }
};


如果不丟上線上商店,要把以上二個檔案存在同一資料夾,到Chrome的擴充功能開啟開發人員模式,再載入未封裝擴充功能去選資料夾即可...

啟用我的pchome 自動收外部信功能

其實程式主要就是每五分鐘去點下圖中 "howard_elinx"這個連結,因為這個連結紅框中的key值會一直改變,所以才需要從頁面的<A>標籤下手,就這麼簡單 ...

pchome web mail 要先新增自己外部郵件連結

當然gmail要設定去收pchome的信,而且pchome web mail也要開啟放著,缺點就是下班後電腦關了手機就沒法同步收到公司的信,哦!! 不!! 這是優點 ...

沒有留言:

張貼留言