From 932ad885127bd7fb8800e9c56cc5db9062f065d8 Mon Sep 17 00:00:00 2001 From: TanShun Date: Thu, 15 Mar 2018 11:39:53 +0800 Subject: [PATCH] Allow browser plugin to be compatible with the Firefox Nightly 61.0a1. --- chrome/background.js | 296 ++++++++++++++++++------------------------- chrome/evn.js | 37 ++---- chrome/log.js | 48 +++---- chrome/manifest.json | 52 ++++---- chrome/popup.js | 58 ++++----- 5 files changed, 207 insertions(+), 284 deletions(-) diff --git a/chrome/background.js b/chrome/background.js index d07afa8..0e8e579 100644 --- a/chrome/background.js +++ b/chrome/background.js @@ -1,147 +1,118 @@ /** * github: https://github.com/luofei614/SocketLog * @author luofei614 - */ -var websocket=null; -var websocket_timeout=0; -function ws_init() -{ - if(websocket) - { + */ +var websocket = null; +var websocket_timeout = 0; + +function ws_init() { + if (websocket) { //避免重复监听 - websocket.onclose=function(){};//onclose 函数置空,防止重复链接 - websocket.close(); + websocket.onclose = function() {}; //onclose 函数置空,防止重复链接 + websocket.close(); } - var address=localStorage.getItem('address'); - var client_id=localStorage.getItem('client_id'); - if(!address) - { - address="ws://localhost:1229"; + var address = localStorage.getItem('address'); + var client_id = localStorage.getItem('client_id'); + if (!address) { + address = "ws://localhost:1229"; } - if(client_id) - { + if (client_id) { //client_id作为地址 - address+='/'+client_id; + address += '/' + client_id; } - websocket=new WebSocket(address); - - websocket.onerror=function(msg) - { + websocket = new WebSocket(address); + websocket.onerror = function(msg) { clearTimeout(websocket_timeout); - websocket_timeout=setTimeout(ws_init,2000); - localStorage.setItem('status','error'); + websocket_timeout = setTimeout(ws_init, 2000); + localStorage.setItem('status', 'error'); disable_icon(); }; - - websocket.onclose=function() - { - setTimeout(function(){ + websocket.onclose = function() { + setTimeout(function() { clearTimeout(websocket_timeout); - websocket_timeout=setTimeout(ws_init,2000); - },1000); - localStorage.setItem('status','close'); + websocket_timeout = setTimeout(ws_init, 2000); + }, 1000); + localStorage.setItem('status', 'close'); disable_icon(); } - - websocket.onopen=function() - { - localStorage.setItem('status','open'); - enable_icon(); + websocket.onopen = function() { + localStorage.setItem('status', 'open'); + enable_icon(); } - - - websocket.onmessage=function(event){ - - var check_error=function() - { - if(event.data.indexOf('SocketLog error handler')!='-1') - { - var opt = { - type: "basic", - title: "注意", - message: "有异常报错,请注意查看console 控制台中的日志", - iconUrl: "logo.png" + websocket.onmessage = function(event) { + var check_error = function() { + if (event.data.indexOf('SocketLog error handler') != '-1') { + var opt = { + type: "basic", + title: "注意", + message: "有异常报错,请注意查看console 控制台中的日志", + iconUrl: "logo.png" }; - chrome.notifications.create('',opt,function(id){ - setTimeout(function(){ - chrome.notifications.clear(id,function(){}); - },3000); + chrome.notifications.create('', opt, function(id) { + setTimeout(function() { + chrome.notifications.clear(id, function() {}); + }, 3000); }); - } - - - if(event.data.indexOf('[NO WHERE]')!='-1') - { + if (event.data.indexOf('[NO WHERE]') != '-1') { var opt = { - type: "basic", - title: "注意", - message: "存在没有WHERE语句的操作sql语句", - iconUrl: "logo.png" + type: "basic", + title: "注意", + message: "存在没有WHERE语句的操作sql语句", + iconUrl: "logo.png" }; - chrome.notifications.create('',opt,function(id){ - setTimeout(function(){ - chrome.notifications.clear(id,function(){}); - },3000); + chrome.notifications.create('', opt, function(id) { + setTimeout(function() { + chrome.notifications.clear(id, function() {}); + }, 3000); }); } - }; - - try - { - var data=JSON.parse(event.data); - } - catch(e) - { - if(0==event.data.indexOf('close:')){ - websocket.onclose=function(){};//onclose 函数置空,防止重复链接 - alert('此client_id不允许连接服务'); - }else{ - alert('日志格式错误,'+event.data); - } - return ; + try { + var data = JSON.parse(event.data); + } catch (e) { + if (0 == event.data.indexOf('close:')) { + websocket.onclose = function() {}; //onclose 函数置空,防止重复链接 + alert('此client_id不允许连接服务'); + } else { + alert('日志格式错误,' + event.data); + } + return; } - var client_id=localStorage.getItem('client_id'); + var client_id = localStorage.getItem('client_id'); //判断是否有强制日志 - if(client_id && data.force_client_id==client_id) - { - //将强制日志输出到当前的tab页 - chrome.tabs.query( - {currentWindow: true, active: true}, - function(tabArray) { - if (tabArray && tabArray[0]) - { - //延迟保证日志每次都能记录 - setTimeout(function(){ - check_error(); - chrome.tabs.sendMessage(tabArray[0].id,data.logs); - },100); - } + if (client_id && data.force_client_id == client_id) { + //将强制日志输出到当前的tab页 + chrome.tabs.query({ + currentWindow: true, + active: true + }, function(tabArray) { + if (tabArray && tabArray[0]) { + //延迟保证日志每次都能记录 + setTimeout(function() { + check_error(); + chrome.tabs.sendMessage(tabArray[0].id, data.logs); + }, 100); } - ); - return ; + }); + return; } - - if((client_id && data.client_id!=client_id) || !data.tabid) - { - //不是当前用户的日志不显示。 - return ; + if ((client_id && data.client_id != client_id) || !data.tabid) { + //不是当前用户的日志不显示。 + return; } //延迟保证日志每次都能记录 - setTimeout(function(){ + setTimeout(function() { check_error(); - chrome.tabs.sendMessage(parseInt(data.tabid),data.logs); - },100); + chrome.tabs.sendMessage(parseInt(data.tabid), data.logs); + }, 100); }; } -function ws_restart() -{ +function ws_restart() { ws_init(); } - function enable_icon() { chrome.browserAction.setIcon({ path: "logo.png" @@ -153,72 +124,57 @@ function disable_icon() { path: "logo_disabled.png" }); } - - - ws_init(); - -function url_exp(url) -{ - var splatParam = /\*/g; - var escapeRegExp = /[-[\]{}()+?.,\\^$#\s]/g; - url = url.replace(escapeRegExp, '\\$&') - .replace(splatParam, '(.*?)'); +function url_exp(url) { + var splatParam = /\*/g; + var escapeRegExp = /[-[\]{}()+?.,\\^$#\s]/g; + url = url.replace(escapeRegExp, '\\$&').replace(splatParam, '(.*?)'); return new RegExp(url, 'i'); -} - -chrome.webRequest.onBeforeSendHeaders.addListener( - function(details) { - - var header="tabid="+details.tabId; - - var client_id=localStorage.getItem('client_id'); - if(!client_id) - { - client_id=''; - } - - - header+="&client_id="+client_id; - - var special_domain=localStorage.getItem('special_domain'); - if(!special_domain) - { - special_domain='*.sinaapp.com'; - localStorage.setItem('special_domain',special_domain); - } - var exp=url_exp(special_domain); - if (exp.test(details.url)) - { - //如果是特殊环境域名 - for (var i = 0; i < details.requestHeaders.length; ++i) - { - if (details.requestHeaders[i].name === 'User-Agent') - { - //将参数放在User-agent中,兼容SAE的情况 - details.requestHeaders[i].value+=" SocketLog("+header+")"; - break; - } +} +chrome.webRequest.onBeforeSendHeaders.addListener(function(details) { + var header = "tabid=" + details.tabId; + var client_id = localStorage.getItem('client_id'); + if (!client_id) { + client_id = ''; + } + header += "&client_id=" + client_id; + var special_domain = localStorage.getItem('special_domain'); + if (!special_domain) { + special_domain = '*.sinaapp.com'; + localStorage.setItem('special_domain', special_domain); + } + var exp = url_exp(special_domain); + if (exp.test(details.url)) { + //如果是特殊环境域名 + for (var i = 0; i < details.requestHeaders.length; ++i) { + if (details.requestHeaders[i].name === 'User-Agent') { + //将参数放在User-agent中,兼容SAE的情况 + details.requestHeaders[i].value += " SocketLog(" + header + ")"; + break; } - } - else - { - details.requestHeaders.push({name:'SocketLog',value:" SocketLog("+header+")"}); } - - return {requestHeaders: details.requestHeaders}; - }, - {urls: [""]}, - ["blocking", "requestHeaders"]); - -chrome.webRequest.onCompleted.addListener(function(details){ - var online_domain=localStorage.getItem('online_domain'); - if(online_domain){ - var exp=url_exp(online_domain); - if(exp.test(details.url)) - { - chrome.tabs.sendMessage(details.tabId,'online_evn'); + } else { + details.requestHeaders.push({ + name: 'SocketLog', + value: " SocketLog(" + header + ")" + }); + } + return { + requestHeaders: details.requestHeaders + }; +}, { + urls: [""] +}, ["blocking", "requestHeaders"]); +chrome.webRequest.onCompleted.addListener(function(details) { + var online_domain = localStorage.getItem('online_domain'); + if (online_domain) { + var exp = url_exp(online_domain); + if (exp.test(details.url)) { + chrome.tabs.sendMessage(details.tabId, 'online_evn'); } } -},{urls: [""],types:['main_frame','sub_frame']}); +}, { + urls: [""], + types: ['main_frame', 'sub_frame'] +}); \ No newline at end of file diff --git a/chrome/evn.js b/chrome/evn.js index 13c0587..62f011c 100644 --- a/chrome/evn.js +++ b/chrome/evn.js @@ -1,38 +1,29 @@ //环境标示,识别正式环境 -chrome.extension.onMessage.addListener( -function(logs) -{ - if('online_evn'==logs) - { - if('complete'!=document.readyState){ +chrome.runtime.onMessage.addListener(function(logs) { + if ('online_evn' == logs) { + if ('complete' != document.readyState) { document.addEventListener('DOMContentLoaded', show_online_evn, true); - } - else - { + } else { show_online_evn(); } } }); -function show_online_evn() -{ - if(window.top==window || window.top.document.getElementsByTagName('frameset').length>0) - { - if(!document.getElementById('_socketlog_online_evn_span')) - { +function show_online_evn() { + if (window.top == window || window.top.document.getElementsByTagName('frameset').length > 0) { + if (!document.getElementById('_socketlog_online_evn_span')) { //标记正式环境 var mySpan = document.createElement("span"); mySpan.innerHTML = "正式环境,请谨慎操作!"; mySpan.style.color = "#fff"; - mySpan.id="_socketlog_online_evn_span"; + mySpan.id = "_socketlog_online_evn_span"; mySpan.style.backgroundColor = "red"; - mySpan.style.position="absolute"; - mySpan.style.top="10px"; - mySpan.style.left="10px"; - mySpan.style.padding="5px"; - mySpan.style.zIndex="10000"; + mySpan.style.position = "absolute"; + mySpan.style.top = "10px"; + mySpan.style.left = "10px"; + mySpan.style.padding = "5px"; + mySpan.style.zIndex = "10000"; document.body.appendChild(mySpan); } } -} - +} \ No newline at end of file diff --git a/chrome/log.js b/chrome/log.js index fe7390d..cf2e2e2 100644 --- a/chrome/log.js +++ b/chrome/log.js @@ -1,38 +1,24 @@ /** * github: https://github.com/luofei614/SocketLog * @author luofei614 - */ -chrome.extension.onMessage.addListener( -function(logs) -{ - if('object'!=typeof(logs)) - { - return ; + */ +chrome.runtime.onMessage.addListener(function(logs) { + if ('object' != typeof(logs)) { + return; } - logs.forEach(function(log) - { - if(console[log.type]) - { - if(log.css) - { - console[log.type]('%c'+log.msg,log.css); - } - else - { + logs.forEach(function(log) { + if (console[log.type]) { + if (log.css) { + console[log.type]('%c' + log.msg, log.css); + } else { console[log.type](log.msg); - } - return ; - } - - if('alert'==log.type) - { - alert(log.msg); - } - else - { - alert('SocketLog type error, '+log.type); } + return; + } + if ('alert' == log.type) { + alert(log.msg); + } else { + alert('SocketLog type error, ' + log.type); + } }); -}); - - +}); \ No newline at end of file diff --git a/chrome/manifest.json b/chrome/manifest.json index 0657033..e6a8cc6 100644 --- a/chrome/manifest.json +++ b/chrome/manifest.json @@ -1,30 +1,28 @@ { - "manifest_version": 2, - - "name": "SocketLog", - "description": "SocketLog是FirePHP和ChromePHP的替代者,不仅能做ajax调试,还能做API调试。", - "version": "2.2.0", - "permissions": [ "webRequest","webRequestBlocking", "tabs","notifications", "http://*/*", "https://*/*" ], - "content_scripts": [ - { - "js": [ "log.js" ], - "matches": [ "http://*/*", "https://*/*" ], - "run_at": "document_start" + "manifest_version": 2, + "name": "SocketLog", + "description": "SocketLog是FirePHP和ChromePHP的替代者,不仅能做ajax调试,还能做API调试。", + "version": "2.2.1", + "permissions": ["webRequest", "webRequestBlocking", "tabs", "notifications", "http://*/*", "https://*/*"], + "content_scripts": [{ + "js": ["log.js"], + "matches": ["http://*/*", "https://*/*"], + "run_at": "document_start" + }, { + "js": ["evn.js"], + "matches": ["http://*/*", "https://*/*"], + "run_at": "document_start", + "all_frames": true + }], + "background": { + "scripts": ["background.js"] }, - { - "js": [ "evn.js" ], - "matches": [ "http://*/*", "https://*/*" ], - "run_at": "document_start", - "all_frames":true + "options_ui": { + "page": "options.html", + "open_in_tab": true + }, + "browser_action": { + "default_icon": "logo.png", + "default_popup": "popup.html" } - ], - "background":{ - "scripts":["background.js"] - }, - "options_page": "options.html", - "browser_action": { - "default_icon": "logo.png", - "default_popup": "popup.html" - } - -} +} \ No newline at end of file diff --git a/chrome/popup.js b/chrome/popup.js index e4c7780..1fe5f8b 100644 --- a/chrome/popup.js +++ b/chrome/popup.js @@ -1,49 +1,41 @@ /** * github: https://github.com/luofei614/SocketLog * @author luofei614 - */ + */ document.addEventListener('DOMContentLoaded', init, false); -function init() -{ - if(localStorage.getItem('address')) - { - document.getElementById('address').value=localStorage.getItem('address'); - } - if(localStorage.getItem('client_id')) - { - document.getElementById('client_id').value=localStorage.getItem('client_id'); +function init() { + if (localStorage.getItem('address')) { + document.getElementById('address').value = localStorage.getItem('address'); } - var status=localStorage.getItem('status'); - if(status) - { - var text=''; - - switch(status) - { + if (localStorage.getItem('client_id')) { + document.getElementById('client_id').value = localStorage.getItem('client_id'); + } + var status = localStorage.getItem('status'); + if (status) { + var text = ''; + switch (status) { case "open": - text='链接成功'; - break; + text = '链接成功'; + break; case "close": - text='链接断开'; - break; + text = '链接断开'; + break; case "error": - text='链接失败'; - break; + text = '链接失败'; + break; default: - alert('运行状态异常'); - break; + alert('运行状态异常'); + break; } - document.getElementById('status').innerHTML=text; + document.getElementById('status').innerText = text; } - - document.getElementById('save').addEventListener('click',save,false); + document.getElementById('save').addEventListener('click', save, false); } -function save() -{ - localStorage.setItem('address',document.getElementById('address').value); - localStorage.setItem('client_id',document.getElementById('client_id').value); +function save() { + localStorage.setItem('address', document.getElementById('address').value); + localStorage.setItem('client_id', document.getElementById('client_id').value); chrome.extension.getBackgroundPage().ws_restart(); window.close(); -} +} \ No newline at end of file