JavaScript & GreaseMonkey


今天達人講了個 css2js 的網頁,不錯用。大致上,就是原來 CSS 裡面有 ‘-’ 的,例如 ‘a-b’ 的話,要用 javascript 來 呼叫的話就是用 ‘aB’。同理,’a-b-c’ 就是 ‘aBC’。如果是 ‘abc’ 的話,那轉過去就還是 ‘abc’ ,不過也有例外:

  • float → styleFloat

另外就是有些遇到 ‘:’ 的時候,可以比照 ‘-’ 來處理:

  • text-decoration: blink → textDecorationBlink
  • text-decoration: line-through → textDecorationLineThrough
  • text-decoration: none → textDecorationNone
  • text-decoration: overline → textDecorationOverline
  • text-decoration: underline → textDecorationUnderline

在 HTML tag 裡面,雖然 javascript 可以使用 setAttribute() 來更改 tag 中裡面的設定,比方說 <a href=”lala”> 我們可以抓到這個 node 之後(比方說用 getElementsByTagName(’a')),用 node.setAttribute(’value’,'lala’)。這樣就會變成 <a value=”lala” href=”lala”> 不過如果牽涉到 style 的話,不建議這樣使用,因為可能會修改到本來存在的 style,或者在多個函式都會對這個 node 設定 style 的時候,使用 setAttribute(’style’,'its value’) 就會有 race condition 的問題發生(譬如用了 GM_xmlhttpRequest 或是類似的函式),所以比較好的方式還是使用 node.style. 來做設定。

Gmail standard view 預設是在有 javascript 下執行的,但是我總是嫌它太慢。所以都用 basic view。但是用 basic view 有個缺點,本來在 standard view 可以用的 [Select All] 把所有 spam mails 全部選起來的功能就不見了。所以在 basic view 要清 spam mails 就只得一個個點,太麻煩。所以用油猴寫了幾行,讓進入到 spam mail folder 的時候,那些 spam mail 預設都已經打好勾勾了,那我只要按一下 [Delete Forever]就會把那些全部刪掉。

// ==UserScript==
// @name           Checked all spam mail by default
// @namespace      standard
// @include        https://mail.google.com/mail/h/*/?s=m
// ==/UserScript==

var qch=document.getElementsByTagName('input');

for(var i=0;i<qch.length;i++)
  {
  if(qch[i].getAttribute(‘type’)==‘checkbox’)qch[i].setAttribute(‘checked’,);
  }

主要就是利用 form 中 checked 這個屬性(attribute)來做的,只要用 setAttribute() 補上 checked 就 OK 啦!

在 《GreaseMonkey 這玩意》中提到滑鼠事件要改寫成:

window.addEventListener(’mouseevent’,function(event),true);

mouseevent 的話,除了 mouseup,mousedown,dblclick 之外,還可以偵測滑鼠的中鍵滾輪 DOMMouseScroll
(more…)

如果連接的網站有用 .htaccess 設定帳號密碼,則可以用 user:password@URL 的方式通過檢查,如下:

GM_xmlhttpRequest(
  {
  method: 'GET',
  url: encodeURI(‘http://user:password@URL’),
  onload: function(req)
	  {
           // do something
	  }
  });

(more…)

要提 firefox 上這個 plugin: greasemonkey 俗稱「油猴」這個東西,就不能不先提及 javascript 。從開始遇到用 javascript 的網頁開始,一直就不是很喜歡。所以在 No script 這個 firefox plugin 還沒出現之前,瀏覽器的選項裡面一定都是 disable javascript,取消 javascript 的執行。可想而知, java 當然更是要關掉。

網頁設計者在你家養的小鬼: javascript

可是從 Mosaic 、Hotdog 一路以來,到數年前的 firefox 瀏覽器,使用者基本上一直處於被動、消極的狀態。許多網站就是非得要你打開 javascript 或是 java 才能看。我們更不用提說到現在還有購書的網站非得要 IE 才能用(這種網站我就不進去買了)。後來 No script 的出現,讓我們可以對網站過濾,設定哪些網站的 javascript 可以執行,哪些不行。就這個時候的 javascript 對我來說,我很清楚它是一個 client-side 也就是在我們自己電腦上執行的東西,但是它做的事情,卻是從為虎做倀到讓你自廢武功不等。換言之,它就像是網頁設計者用你的電腦資源養來監視你的小鬼,而你就活像隻被寄生的毛蟲一樣,面對寄生無力對抗。
(more…)