php线上预览日志--2.谷歌插件开发

1.写在前面:

  谷歌插件开发其实并没有想象中那么难,会一些js就可以了,扩展开发可以自己开发,但是如果你想发布的话需要成为谷歌的开发者,掏5刀,具体可自行查阅,如果只是说小范围使用可以加载解压文件来引入扩展,不再赘述

2.起步:构建文件夹

先构建我们的文件结构:(最好与我的文件名保持一致)

//新建文件夹 chrome_extension,里面的文件结构如下:
  ---js
  ---css
  ---image
  ---manifest.json

manifest.json,通过文件类型就可看出他是一个配置类型,可类比package.json 和composer.json文件.

3.manifest.json配置及简单说明:

{
    "name": "First chrom Extension", //扩展名
    "version": "1.0", //自己项目的版本,自己随意定义
    "description": "Build an Extension!", //扩展的简介
    "manifest_version": 2, //这个是manifest.json文件的版本,这里必须是2
    "icons":{
        "16": "img/log.png",//这里我就用了同一张图片
        "48": "img/log.png",
        "128": "img/log.png"
    },
    "browser_action":{//这个是右上角的扩展展示的信息
        "default_icon":"img/log.png",
        "default_title":"Log Message",  //hover效果
        "default_popup":"popup.html" 
    },
    "background":{
        "page":"background.html" //background表示的是生命周期最长的文件,可以理解成他是一个容器文件.
    },
    "devtools_page": "devtools.html" //这是定义类似console.log的页面

}

4.创建类似console,network的F12的选项卡

新建devtools.html:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script type="text/javascript" src="js/devtools.js"></script>
</head>
<body>

</body>
</html>

这个html的作用仅仅是用于引用devtools.js

下面新建devtools.js(js文件夹内):

chrome.devtools.panels.create('LogMessage', 'img/log.png', 'logMessage.html', function(panel) {});

这里是logMessage.html就是我们真正想要的,先放张效果

 

 

 

 

 下面是logMessage.html的代码:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="info">

    </div>
</body>
</html>
<script src="js/logMessage.js"></script>

 

这里我将logMessage的js处理抽离成了一个新的文件.在logMessage.js可以写关于websocket的连接和消息的接收.

下面是logMessage.js的代码:

var url = localStorage.getItem("url");
var client = localStorage.getItem("client");
var ws = new WebSocket(url);

ws.onopen = function()
{
    var obj= {"client":client,"type":'connect'}
    var str = JSON.stringify(obj);
    ws.send(str);
};

ws.onmessage = function (evt)
{
    var msg = evt.data;
    var obj = JSON.parse(msg)
    if(obj.level=='error'){
        node = "<p><b style='color:red'>[Error]</b>"+obj.log+"</p><hr>"
        info.innerHTML += node
    }else if(obj.level=='warn'){
        node = "<p><b style='color:blue'>[warn]</b>"+obj.log+"</p><hr>"
        info.innerHTML += node
    }else{
        node = "<p><b style='color:green'>[info]</b>"+obj.log+"</p><hr>"
        info.innerHTML += node
    }

};

ws.onclose = function()
{

};

新增popup.html用于传递websocket所需要的信息:

<!DOCTYPE html>
<html>
<head>
    <title>LogMessage</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="css/style.css" rel='stylesheet' type='text/css' />
</head>
<body>
<div id="container">
    <div class="login-form">
        <div class="head-info">
            <label class="lbl-1"> </label>
            <label class="lbl-2"> </label>
            <label class="lbl-3"> </label>
        </div>
        <div class="clear"> </div>

        <form>
            <input type="text" class="text" id="url">
            <div class="key">
                <input type="text" value="ClientID" id="client" >
            </div>
        </form>
        <div class="signin">
            <input type="submit" id ="save"  value="Save" >
        </div>
    </div>
</div>


</body>
</html>
<script src="js/jquery-3.4.1.min.js"></script>
<script src="js/popup.js"></script>

与之相匹配的popup.js:

var bg = chrome.extension.getBackgroundPage();
var oldUrl = localStorage.getItem("url")?localStorage.getItem("url"):"ws://localhost:8001";
var oldClient = localStorage.getItem("client")?oldClient = localStorage.getItem("client"): "Fill with your client number";
$("#url").val(oldUrl);
$("#client_id").val(oldClient);

var client = $("#client_id").val();
$("#save").click(function(){
    var url =$("#url").val();
    var client = $("#client").val();
    bg.initParam(url,client); // 访问bg的函数
});

 

新增background.js这个文件需要在background.html引用:

var url = localStorage.getItem('url');
var client = localStorage.getItem('client');
function initParam(url,client){
    localStorage.setItem('url',url)
    localStorage.setItem("client",client)
}

 

扩展完成。

5.展示:

这里我准备的是js的websocket客户端,用于推送日志信息,至于php的websocket客户端,后面会介绍。

posted @ 2019-12-30 23:12  callmelx  阅读(257)  评论(0编辑  收藏  举报