隔了一年多了,一直打算把這個插件再完善一下,這不花了點時間重構了一下。此次更新使你們能夠在教學評估列表頁(就是那個有不少老師的頁面)
一鍵進行評教了。javascript
可是你必須在每次評教完成彈出評估完成時按一下回車,這點讓強迫症很難受啊(逃css
這幾天又要進行教學評估了,原本吧可能出於「爲了教學質量 」這種神聖重要而高貴的目的(姑且這麼認爲吧 :)),可是可是你網站作得那麼搓就是你的錯了。選一個老師的按鈕那麼小,你是要誰點;選優良中的按鈕那麼小,你是要誰點,關鍵是隻能點 radio
,點擊文字倒是沒有用的,這就讓人忍不了了。做爲一個前端工程師,怎麼可以忍受這種「奇恥大辱」,因而決定試一試,沒想到還真成功了,也就方便了許多。html
若是你只是想要快速進行教學評估而不想使用插件的話,能夠在瀏覽器中按下 F12
打開控制檯,輸入下面這段代碼並按下回車,你會發現一切都會自動進行。記得要在 教學評估列表頁(就是那個有不少老師的頁面)
呦。前端
在瀏覽器中按 F12
會出現下圖這樣的東西,點擊 console
進入控制檯。java
複製下面的代碼,敲擊回車即可快速填選。git
var CONFIG = { optionsRate: [8, 1, 0, 0], // 每次評教的四個選項的比例 comments: [ // 主觀評價,評價時會隨機選擇 '課程內容很充實,教師教學很風趣。', '不夠有趣', '老師很好!教得賊棒了!', '不錯不錯', '好老師', '真是一門好課啊!很喜歡呢~', '但願加油!' ] } start() // 開始腳本 function start(data) { evaluateAuto() window.frames['bottomFrame'].document.querySelector('[name=mainFrame]').onload = evaluateAuto } // 自動評教 function evaluateAuto () { var mainFrame = window.frames['bottomFrame'].frames['mainFrame'] var btnEle = mainFrame.document.querySelector('img[title=評估]') if(mainFrame.document.querySelectorAll('.fieldsettop .titleTop3')[1]) { // 評教頁 evaluate(mainFrame) } else if (btnEle) { // 列表頁 btnEle.click() } else if(mainFrame.document.querySelector('img[title=查看]')) { window.frames['bottomFrame'].document.querySelector('[name=mainFrame]').onload = null alert('已所有評教') } else { window.frames['bottomFrame'].document.querySelector('[name=mainFrame]').onload = null console.log('請在教學評估頁使用') } } // 評教 function evaluate (mainFrame) { var comment = CONFIG.comments[parseInt(Math.random() * CONFIG.comments.length)] var optionsRate = CONFIG.optionsRate // 全部選項 Node var optionsEles = mainFrame.document.querySelectorAll('.fieldsettop .titleTop3')[1].querySelectorAll('#tblView table tr:nth-child(even) > td') // 主觀評價 Node var subjectiveEles = [optionsEles[optionsEles.length - 1].querySelector('textarea'), mainFrame.document.querySelectorAll('.fieldsettop .titleTop3')[2].querySelector('textarea')] // 提交 Node var submitBtn = mainFrame.document.querySelector('[title=提交]') // 隨機選擇 for(var i = 0, optionIndex = 0; i < optionsEles.length - 1; i++) { optionIndex = getRandomOption(optionsRate) optionsEles[i].querySelectorAll('input')[optionIndex].checked = true } // 填充主觀評價 commentsFill(subjectiveEles, comment) // 提交評價 submitBtn.click() } // 按照比例獲取隨機選項 function getRandomOption (optionsRate) { optionsRate = optionsRate || [1, 1, 1, 1] var rateSum, random, index, sum, i; for(i = 0, rateSum = 0; i < optionsRate.length; i++) { rateSum += parseInt(optionsRate[i]) } random = Math.ceil(Math.random() * rateSum) for(i = 0, sum = 0; i < optionsRate.length; i++) { sum += optionsRate[i] if(random <= sum) { return i } } return 0 } // 填充評論框 function commentsFill (eles, comment) { for(var i = 0; i < eles.length; i++) { eles[i].value = comment } return i }
你須要在必須在教學評估列表頁(就是那個有不少老師的頁面)
才能夠成功,固然你也能夠在問卷評估頁嘗試。另外你必須在每次評教完成彈出評估完成時按一下回車,這點讓強迫症很難受啊(逃github
Chrome 應用商店web
百度雲盤chrome
插件已更新,部分與截圖顯示不一致。npm
若是你不是從 Chrome 應用商店下載的話,因爲 Chrome 目前禁止第三方插件的安裝,因此你須要在 Chrome 裏依次點擊 菜單
更多工具
擴展程序
而後打開 開發者模式
,將插件拖進來而後會自動安裝。
GitHub - xd-teaching-evaluator
damn-jwxt/ ├── css/ ├── img/ ├── js/ ├── manifest.json └── popup.html
popup.html
插件中的彈窗,也就是打開插件是看到的那個頁面。
popup.js
插件彈出層的邏輯,獲取數據並開始注入函數執行。
content.js
Content Scrip,被注入到頁面中的核心邏輯,也是真正執行的代碼。
提升代碼質量
應該能夠在教師列表頁進行一鍵評教的,這樣就不用一個個點選老師了