一個碼云自動代碼檢視的插件折柠,當(dāng)然用httpclient也能做
插件整體結(jié)構(gòu)
打開chrome的開發(fā)者模式即可使用
image.png
manifest.json
插件的基本定義
{
"background": {
"page": "background.html"
},
// 需要注入的腳本
"content_scripts": [ {
"all_frames": true,
"js": [ "chrome-state-manager.js" ],
"matches": [ "http://mayun.kkkkkkk.cn/**/commits/master", "http://mayun.kkkkkkkk.cn/LS_JCYW_TEAM1/**/commit/**" ],
"run_at": "document_end"
} ],
"description": "碼云自動commit",
// 插件圖標(biāo)
"icons": {
"128": "axurerp-128.png",
"48": "axurerp-48.png"
},
"manifest_version": 2,
"name": "my plugin Extension for Chrome",
"page_action": {
"default_icon": "axurerp-16.png"
},
// 需要進(jìn)行跨域訪問的地址
"permissions": [ "tabs" ],
// 插件更新地址
"update_url": "https://clients2.google.com/service/update2/crx",
"version": "0.0.1"
}
background.html
<html>
<head>
<script type="text/javascript"></script>
</head>
<body></body>
</html>
chrome-state-manager.js
具體的邏輯
(function() {
// commit列表頁
var regex1 = new RegExp('.*/LS_JCYW_TEAM1/.*commits/master');
// 審批詳情頁
var regex2 = new RegExp('.*/LS_JCYW_TEAM1/.*commit/.*');
function init() {
var url = window.location.href;
// 審批列表頁
if (regex1.test(url)){
// 所有沒有審批的提交
var greyElemnts = document.getElementsByClassName('grey');
if (greyElemnts.length > 0) {
// 獲取父級div
var commitDivParent = greyElemnts[0].parentNode;
// 跳轉(zhuǎn)審批詳情頁的a標(biāo)簽
var aTag = commitDivParent.getElementsByClassName("commit_short_id")[0];
// 觸發(fā)點擊事件
aTag.click();
}
// 審批詳情頁,并且頁面是未審批狀態(tài)
} else if (regex2.test(url) && document.getElementsByClassName('grey').length > 0) {
// 審批通過按鈕
var _btn = document.getElementById('codereview_complete');
// 去掉disabled樣式批狐。這里原來是 class = "...... disabled",并不是<button class="...." disabled="true"/>
_btn.classList.remove('disabled');
// 觸發(fā)點擊事件
_btn.click();
// 返回上一頁并刷新
window.location.href=document.referrer;
}
}
// var interval1 = setInterval(init, 1000)
init();
})();