使用TamperMonkey為網(wǎng)頁增加本地外觀

最近遇到一個問題妆艘,在使用Google Classroom時需要對學(xué)員進(jìn)行分組泞遗,而應(yīng)用本身不提供這個功能。有同事研究了它的API倔监,發(fā)現(xiàn)也無法解決這個問題直砂。這無疑使我們的工作變得繁重起來,不得不做更多的人工工作浩习。
其實我們需要的也并不多静暂,只要能夠快速統(tǒng)計出每組的學(xué)員數(shù)據(jù)就可以了,每組每節(jié)課有多少學(xué)員完成了作業(yè)谱秽,如果有一個映射表洽蛀,再經(jīng)過簡單的排序或統(tǒng)計摹迷,數(shù)據(jù)將呼之欲出。

很容易想到了瀏覽器插件郊供,由于這些數(shù)據(jù)僅需要特定的人進(jìn)行查閱和統(tǒng)計即可峡碉,因此在瀏覽器客戶端完成即可。
制作瀏覽器插件成本還是有一點高驮审,于是轉(zhuǎn)而想到了TamperMonkey鲫寄,俗稱“油猴腳本”。
這個就簡單多啦疯淫。瀏覽器安裝TamperMonkey擴(kuò)展程序以后地来,自己看看頁面元素,寫寫JS就可以搞定啦熙掺。

TamperMonkey是什么

Tampermonkey是一款免費的瀏覽器擴(kuò)展程序未斑,支持多種瀏覽器。
通過TamperMonkey可以對制定的網(wǎng)頁加載和運(yùn)行用戶腳本币绩,改變網(wǎng)頁的外觀颂碧,修改網(wǎng)頁瀏覽體驗。
我們可以通過直接加載流行的用戶腳本类浪,或是編寫自己的用戶腳本载城,來達(dá)到上述的目的。Greasyfork是一個很熱門的用戶腳本網(wǎng)站费就,點開了中文條目以后诉瓦,似乎打開了一扇新的大門。OMG力细,我啥也沒說睬澡。

TamperMonkey怎么寫

作為程序員,還是很喜歡個性化定制的眠蚂,尤其是遇到當(dāng)下這種奇葩的問題煞聪。
那么來看看如何寫自己的用戶腳本。
TamperMonkey的語法很簡單逝慧,兩個部分:

  1. 元數(shù)據(jù)定義
  2. 功能腳本

元數(shù)據(jù)

元數(shù)據(jù)定義使用JavaScript注釋來描述該腳本的使用情境昔脯,數(shù)據(jù)定義見官方文檔。其中笛臣,比較重要的幾個數(shù)據(jù)如下:

  • include/match/exclude
    用來描述這個腳本將在哪些URL下生效云稚。
    -require
    用來引用用戶腳本中需要引入的外部庫文件。這里最基礎(chǔ)而常用的當(dāng)然就是jQuery啦沈堡,操作頁面元素可是最常用的功能静陈。

功能腳本

功能腳本,說的就是真正起作用的用戶腳本啦。
簡單來說鲸拥,就是純寫JavaScript拐格,沒什么特殊的地方。隨意記錄幾個常用的功能吧刑赶。

等待某個頁面元素加載

const waitForElement = function(selector, callback) {
    if ($(selector).length) {
        callback();
    } else {
        setTimeout(function() {
            waitForElement(selector, callback);
        }, 100);
    }
};

為頁面增加新的元素

const addTextToPage = function() {
    const textDiv = "<div>Some text</div>";
    $("body").append(textDiv);
};

面對Ajax盛行的網(wǎng)頁持續(xù)檢查和執(zhí)行

setInterval(function () { doSomething() }, 1000);

重新排序

const sortRows = function(selector, rowSelector) {
    const rows = $(selector);
    const firstRow = rows[0];
    var otherRows = rows.slice(1);
    otherRows.sort(function(a, b) {
        return $(a).find(rowSelector).html().localeCompare($(b).find(rowSelector).html());
    });

    const newRows = [].concat(firstRow).concat(otherRows);
    rows.replaceWith(newRows);
};

所以禁荒,就很簡單。只要JavaScript玩得溜角撞,沒有啥能阻擋你屏蔽廣告的步伐呛伴,而解決當(dāng)下的這個問題,那就更簡單不過了谒所。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末热康,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子劣领,更是在濱河造成了極大的恐慌姐军,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尖淘,死亡現(xiàn)場離奇詭異奕锌,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)村生,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進(jìn)店門惊暴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人趁桃,你說我怎么就攤上這事辽话。” “怎么了卫病?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵油啤,是天一觀的道長。 經(jīng)常有香客問我蟀苛,道長益咬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任帜平,我火速辦了婚禮幽告,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘罕模。我一直安慰自己评腺,他們只是感情好帘瞭,可當(dāng)我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布淑掌。 她就那樣靜靜地躺著,像睡著了一般蝶念。 火紅的嫁衣襯著肌膚如雪抛腕。 梳的紋絲不亂的頭發(fā)上芋绸,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天,我揣著相機(jī)與錄音担敌,去河邊找鬼摔敛。 笑死,一個胖子當(dāng)著我的面吹牛全封,可吹牛的內(nèi)容都是我干的马昙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼刹悴,長吁一口氣:“原來是場噩夢啊……” “哼行楞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起土匀,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤子房,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后就轧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體证杭,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年妒御,在試婚紗的時候發(fā)現(xiàn)自己被綠了解愤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡乎莉,死狀恐怖琢歇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情梦鉴,我是刑警寧澤李茫,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站肥橙,受9級特大地震影響魄宏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜存筏,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一宠互、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧椭坚,春花似錦予跌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春烁焙,著一層夾襖步出監(jiān)牢的瞬間航邢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工骄蝇, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留膳殷,地道東北人。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓九火,卻偏偏與公主長得像赚窃,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子岔激,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,678評論 2 354