主頁 > 企業開發 > 圖形驗證插件,百度編輯器拓展功能,NodeJs訊息機制以及聊天室,Python做爬蟲

圖形驗證插件,百度編輯器拓展功能,NodeJs訊息機制以及聊天室,Python做爬蟲

2020-09-23 16:50:01 企業開發

圖形驗證插件

網上找了很多圖形驗證插件,比較推薦verify.js

<link rel="stylesheet" type="text/css" href="https://www.cnblogs.com/Gao1234/archive/2020/09/23/css/verify.css">
<script type="text/javascript" src="https://www.cnblogs.com/Gao1234/archive/2020/09/23/js/jquery.min.js"></script> <script type="text/javascript" src="https://www.cnblogs.com/Gao1234/archive/2020/09/23/js/verify.js"></script>
<div id="mpanel4"></div>
<script type="text/javascript">
        $('#mpanel4').slideVerify({
            type: 2,
            vOffset: 5,
            vSpace: 5,
            imgName: ['1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg', '6.jpg', '7.jpg', '8.jpg'],
            imgSize: {
                width: '400px',
                height: '200px',
            },
            blockSize: {
                width: '40px',
                height: '40px',
            },
            barSize: {
                width: '400px',
                height: '40px',
            },
            ready: function () {},
            success: function () {
                $(".verify-left-bar .verify-msg").html('成功');
                $(".verify-left-bar .verify-msg").css('color','#5cb85c');
            },
            error: function () {}
        });
    </script>

百度編輯器拓展功能

紅框內就是自定義的功能

引入百度編輯器后

  ueditor.all.js 

   

    //為工具列添加按鈕,以下都是統一的按鈕觸發命令,所以寫在一起
    var btnCmds = ['translation《--這是你新加的功能','undo', 'redo', 'formatmatch',
        'bold', 'italic', 'underline', 'fontborder', 'touppercase', 'tolowercase',
        'strikethrough', 'subscript', 'superscript', 'source', 'indent', 'outdent',
        'blockquote', 'pasteplain', 'pagebreak',
        'selectall', 'print','horizontal', 'removeformat', 'time', 'date', 'unlink',
        'insertparagraphbeforetable', 'insertrow', 'insertcol', 'mergeright', 'mergedown', 'deleterow',
        'deletecol', 'splittorows', 'splittocols', 'splittocells', 'mergecells', 'deletetable', 'drafts'];

ueditor.config.js

, toolbars: [['translation《--和上面保持一樣的名字', '|', 
            'fullscreen', 'source', '|', 'undo', 'redo', '|',
            'bold', 'italic', 'underline', 'fontborder', 'strikethrough', 'superscript', 'subscript', 'removeformat', 'formatmatch', 'autotypeset', 'blockquote', 'pasteplain', '|', 'forecolor', 'backcolor', 'insertorderedlist', 'insertunorderedlist', 'selectall', 'cleardoc', '|',
            'rowspacingtop', 'rowspacingbottom', 'lineheight', '|',
            'customstyle', 'paragraph', 'fontfamily', 'fontsize', '|',
            'directionalityltr', 'directionalityrtl', 'indent', '|',
            'justifyleft', 'justifycenter', 'justifyright', 'justifyjustify', '|', 'touppercase', 'tolowercase', '|',
            'link', 'unlink', 'anchor', '|', 'imagenone', 'imageleft', 'imageright', 'imagecenter', '|',
            'simpleupload', 'insertimage', 'emotion', 'scrawl', 'insertvideo', 'music', 'attachment', 'map', 'gmap', 'insertframe', 'insertcode', 'webapp', 'pagebreak', 'template', 'background', '|',
            'horizontal', 'date', 'time', 'spechars', 'snapscreen', 'wordimage', '|',
            'inserttable', 'deletetable', 'insertparagraphbeforetable', 'insertrow', 'deleterow', 'insertcol', 'deletecol', 'mergecells', 'mergeright', 'mergedown', 'splittocells', 'splittorows', 'splittocols', 'charts', '|',
            'print', 'preview', 'searchreplace', 'drafts', 'help'
        ]]
        //當滑鼠放在工具列上時顯示的tooltip提示,留空支持自動多語言配置,否則以配置值為準
        //,labelMap:{
        //    'anchor':'', 'undo':''
        //}
                           , labelMap: {
            'translation': '翻譯《--滑鼠放上去的提示'
        }

在初始化編輯器之前增加命令

  UE.commands['translation'] = {

        execCommand: function () {
            var translation = UE.getEditor(this.key);//富文本
              點擊后觸發的事件
        },
        queryCommandState: function () {

        }
    };


    var ue = UE.getEditor('editor');

效果,我再百度編輯器上新增的翻譯功能

NodeJs 做聊天室

  NodeJs 可以在服務器上運行,做JS的服務端,與客戶端NodeJs 保持長連接,業務上可以做及時溝通,

   

參考socket.io.js

     服務端代碼:

  

var httpd = require('http').createServer(handler);
var io = require('socket.io').listen(httpd);
var fs = require('fs');

  參考三個比較關鍵的資源

  

httpd.listen(3000);

監聽3000埠,一般是8077.,,

 

function handler(req, res) {
  fs.readFile(__dirname + '/index.html',
    function(err, data) {
      if (err) {
       res.writeHead(500);
       return res.end('Error loading index.html');
      }

      res.writeHead(200);
      res.end(data);
    }
  );
}

創建HTTP鏈接

io.sockets.on('connection', function (socket) {
  socket.on('clientMessage', function(content) {
    socket.emit('serverMessage', 'You said: ' + content);
    var username = null;

    if (socket.username) {
        username = socket.username;
    }
      socket.broadcast.emit('serverMessage', username + ' said: ' + 
        content);
  });

  socket.on('login', function(username) {
    socket.username = username;
    socket.emit('serverMessage', 'Currently logged in as ' + username);
    socket.broadcast.emit('serverMessage', 'User ' + username +
      ' logged in');   
  });

  socket.emit('login');

});

以上是NodeJs服務端相應事件的主體代碼

<script src=https://www.cnblogs.com/Gao1234/archive/2020/09/23/"http://localhost:3000/socket.io/socket.io.js"></script>
    <script type="text/javascript">
        var messagesElement = document.getElementById('messages');
        var lastMessageElement = null;
        var id = 1;
        function addMessage(message) {
            var newMessageElement = document.createElement('div');
            var newMessageText = document.createTextNode(message);

            newMessageElement.appendChild(newMessageText);
            messagesElement.insertBefore(newMessageElement,
                lastMessageElement);
            lastMessageElement = newMessageElement;
        }

        var socket = io.connect('http://localhost:3000');
        socket.on('serverMessage', function (content,id) {
            addMessage(content+id );
        });

        socket.on('login', function () {
            var username = prompt('What username would you like to use?');
            socket.emit('login', username);
        });

        var inputElement = document.getElementById('input');

        inputElement.onkeydown = function (keyboardEvent) {
            if (keyboardEvent.keyCode === 13) {
                socket.emit('clientMessage', inputElement.value,'11');
                inputElement.value = '';
                return false;
            } else {
                return true;
            }
        };
    </script>

以上是客戶端相應事件的主體代碼

   接下來說下訊息機制吧

     客戶端   var socket = io.connect('http://localhost:3000');

    服務端  io.sockets.on('connection', function (socket) {

 } 

只要沒報500,就說明連接正常,這時候客戶端可以主動向服務端推送訊息,服務端也可以像客戶端推送訊息,

socket.on('login', function (content) {

        socket.emit('serverMessage', '單方面回復非廣播' + content);

        socket.broadcast.emit('serverMessage', '全部回復廣播' + content)
    })
    socket.emit('login');

 服務端定義了用戶登錄,并在連接成功后主動發起Login請求

  socket.on('login', function () {
            var username = prompt('What username would you like to use?');
            socket.emit('login', username);
        });

   客戶端回應服務端Login 傳入登錄的用戶名

  服務端 以 serverMessage 單方面回應請求的客戶端機器(非所有客戶端機器),broadcast 廣播除請求客戶端機器以外的所有機器

客戶端回應服務端 serverMessage

 socket.on('serverMessage', function (content,id) {
            addMessage(content+id );
        });

將訊息加入Html中展示,完成服務端端主動推送訊息機制

  inputElement.onkeydown = function (keyboardEvent) {
            if (keyboardEvent.keyCode === 13) {
                socket.emit('clientMessage', inputElement.value,'11');

客戶端文本框寫入訊息并摁下回車,回應clientMessage

 socket.on('clientMessage', function (content,id) {
       socket.emit('serverMessage', '單方面回復非廣播' + content ,id);

        socket.broadcast.emit('serverMessage', '全部回復廣播' + content)

    })

服務端回應clientMessage,并以serverMessage回應請求客戶端IP,broadcast回應其他客戶端IP.完成客戶端主動推送訊息機制

 

 

 

Python做網路爬蟲

options = webdriver.FirefoxOptions()//使用火狐模擬器做爬蟲,可以發送和跟蹤滑鼠點擊翻頁等事件
options.add_argument('--headless') //無視窗模式
driver = webdriver.Firefox(options=options)
driver.get("http://registers.centralbank.ie/FirmRegisterDataPage.aspx?firmReferenceNumber=C53877&register=32")//目表地址
html = etree.HTML(driver.page_source) //#分析HTML,回傳DOM根節點

     

spanList=html.xpath("//div[@id='ctl00_cphRegistersMasterPage_c1wrptFirmRegisterData']//span")//也可以使用類似得Xpath獲取到指定節點
 while index<len(spanList):
            model=spanList[index]
            # Name:
            if (model.text=='Name:'):
                name=spanList[index+1].text
            else:
                pass

也可以用回圈每個元素體的方式,獲取每個元素的TITLE,比如找到SPAN的文本為:Name,那下一個Span 的值就是要要被抓取的元素

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/113087.html

標籤:其他

上一篇:java設計模式精講 Debug 方式+記憶體分析(含原始碼)

下一篇:HTML常用標簽三

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • IEEE1588PTP在數字化變電站時鐘同步方面的應用

    IEEE1588ptp在數字化變電站時鐘同步方面的應用 京準電子科技官微——ahjzsz 一、電力系統時間同步基本概況 隨著對IEC 61850標準研究的不斷深入,國內外學者提出基于IEC61850通信標準體系建設數字化變電站的發展思路。數字化變電站與常規變電站的顯著區別在于程序層傳統的電流/電壓互 ......

    uj5u.com 2020-09-10 03:51:52 more
  • HTTP request smuggling CL.TE

    CL.TE 簡介 前端通過Content-Length處理請求,通過反向代理或者負載均衡將請求轉發到后端,后端Transfer-Encoding優先級較高,以TE處理請求造成安全問題。 檢測 發送如下資料包 POST / HTTP/1.1 Host: ac391f7e1e9af821806e890 ......

    uj5u.com 2020-09-10 03:52:11 more
  • 網路滲透資料大全單——漏洞庫篇

    網路滲透資料大全單——漏洞庫篇漏洞庫 NVD ——美國國家漏洞庫 →http://nvd.nist.gov/。 CERT ——美國國家應急回應中心 →https://www.us-cert.gov/ OSVDB ——開源漏洞庫 →http://osvdb.org Bugtraq ——賽門鐵克 →ht ......

    uj5u.com 2020-09-10 03:52:15 more
  • 京準講述NTP時鐘服務器應用及原理

    京準講述NTP時鐘服務器應用及原理京準講述NTP時鐘服務器應用及原理 安徽京準電子科技官微——ahjzsz 北斗授時原理 授時是指接識訓通過某種方式獲得本地時間與北斗標準時間的鐘差,然后調整本地時鐘使時差控制在一定的精度范圍內。 衛星導航系統通常由三部分組成:導航授時衛星、地面檢測校正維護系統和用戶 ......

    uj5u.com 2020-09-10 03:52:25 more
  • 利用北斗衛星系統設計NTP網路時間服務器

    利用北斗衛星系統設計NTP網路時間服務器 利用北斗衛星系統設計NTP網路時間服務器 安徽京準電子科技官微——ahjzsz 概述 NTP網路時間服務器是一款支持NTP和SNTP網路時間同步協議,高精度、大容量、高品質的高科技時鐘產品。 NTP網路時間服務器設備采用冗余架構設計,高精度時鐘直接來源于北斗 ......

    uj5u.com 2020-09-10 03:52:35 more
  • 詳細解讀電力系統各種對時方式

    詳細解讀電力系統各種對時方式 詳細解讀電力系統各種對時方式 安徽京準電子科技官微——ahjzsz,更多資料請添加VX 衛星同步時鐘是我京準公司開發研制的應用衛星授時時技術的標準時間顯示和發送的裝置,該裝置以M國全球定位系統(GLOBAL POSITIONING SYSTEM,縮寫為GPS)或者我國北 ......

    uj5u.com 2020-09-10 03:52:45 more
  • 如何保證外包團隊接入企業內網安全

    不管企業規模的大小,只要企業想省錢,那么企業的某些服務就一定會采用外包的形式,然而看似美好又經濟的策略,其實也有不好的一面。下面我通過安全的角度來聊聊使用外包團的安全隱患問題。 先看看什么服務會使用外包的,最常見的就是話務/客服這種需要大量重復性、無技術性的服務,或者是一些銷售外包、特殊的職能外包等 ......

    uj5u.com 2020-09-10 03:52:57 more
  • PHP漏洞之【整型數字型SQL注入】

    0x01 什么是SQL注入 SQL是一種注入攻擊,通過前端帶入后端資料庫進行惡意的SQL陳述句查詢。 0x02 SQL整型注入原理 SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和資料庫打交道的地方都有可能存在。 如這里http://192.168. ......

    uj5u.com 2020-09-10 03:55:40 more
  • [GXYCTF2019]禁止套娃

    git泄露獲取原始碼 使用GET傳參,引數為exp 經過三層過濾執行 第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式 preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'] (?R)參考當前正則運算式,相當于匹配函式里的引數 因此傳遞 ......

    uj5u.com 2020-09-10 03:56:07 more
  • 等保2.0實施流程

    流程 結論 ......

    uj5u.com 2020-09-10 03:56:16 more
最新发布
  • 使用Django Rest framework搭建Blog

    在前面的Blog例子中我們使用的是GraphQL, 雖然GraphQL的使用處于上升趨勢,但是Rest API還是使用的更廣泛一些. 所以還是決定回到傳統的rest api framework上來, Django rest framework的官網上給了一個很好用的QuickStart, 我參考Qu ......

    uj5u.com 2023-04-20 08:17:54 more
  • 記錄-new Date() 我忍你很久了!

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 大家平時在開發的時候有沒被new Date()折磨過?就是它的諸多怪異的設定讓你每每用的時候,都可能不小心踩坑。造成程式意外出錯,卻一下子找不到問題出處,那叫一個煩透了…… 下面,我就列舉它的“四宗罪”及應用思考 可惡的四宗罪 1. Sa ......

    uj5u.com 2023-04-20 08:17:47 more
  • 使用Vue.js實作文字跑馬燈效果

    實作文字跑馬燈效果,首先用到 substring()截取 和 setInterval計時器 clearInterval()清除計時器 效果如下: 實作代碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ......

    uj5u.com 2023-04-20 08:12:31 more
  • JavaScript 運算子

    JavaScript 運算子/運算子 在 JavaScript 中,有一些運算子可以使代碼更簡潔、易讀和高效。以下是一些常見的運算子: 1、可選鏈運算子(optional chaining operator) ?.是可選鏈運算子(optional chaining operator)。?. 可選鏈操 ......

    uj5u.com 2023-04-20 08:02:25 more
  • CSS—相對單位rem

    一、概述 rem是一個相對長度單位,它的單位長度取決于根標簽html的字體尺寸。rem即root em的意思,中文翻譯為根em。瀏覽器的文本尺寸一般默認為16px,即默認情況下: 1rem = 16px rem布局原理:根據CSS媒體查詢功能,更改根標簽的字體尺寸,實作rem單位隨螢屏尺寸的變化,如 ......

    uj5u.com 2023-04-20 08:02:21 more
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 08:01:50 more
  • 如何在 vue3 中使用 jsx/tsx?

    我們都知道,通常情況下我們使用 vue 大多都是用的 SFC(Signle File Component)單檔案組件模式,即一個組件就是一個檔案,但其實 Vue 也是支持使用 JSX 來撰寫組件的。這里不討論 SFC 和 JSX 的好壞,這個仁者見仁智者見智。本篇文章旨在帶領大家快速了解和使用 Vu ......

    uj5u.com 2023-04-20 08:01:37 more
  • 【Vue2.x原始碼系列06】計算屬性computed原理

    本章目標:計算屬性是如何實作的?計算屬性快取原理以及洋蔥模型的應用?在初始化Vue實體時,我們會給每個計算屬性都創建一個對應watcher,我們稱之為計算屬性watcher ......

    uj5u.com 2023-04-20 08:01:31 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:01:10 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:00:32 more