zhuliu 2 роки тому
батько
коміт
f33f0668b7

+ 4 - 1
PIU_FrontEnd/eventPage.js

@@ -12,8 +12,11 @@ function isInt(value){
 };
 
 chrome.contextMenus.onClicked.addListener(function(clickData){//浏览器监听右键选项点击
-    window.alert(JSON.stringify(clickData))
+    
     if(clickData.menuItemId == "spendMoney" && clickData.selectionText){
+        chrome.runtime.sendMessage('',{greeting: "hello"}, function(response) {
+            console.log(123);
+          });
         // if(isInt(clickData.selectionText)){
             
         // }

+ 130 - 4
PIU_FrontEnd/content.js

@@ -1,11 +1,137 @@
-chrome.runtime.onMessage.addListener(
-        function (request, sender, sendResponse) {
-                window.alert(JSON.stringify(document))
+// chrome.runtime.onMessage.addListener(
+//         function (request, sender, sendResponse) {
+//                 window.alert(JSON.stringify(document))
+//         }
+//     );
+
+$(function(){
+    let isMarking = false;
+    let currentColor = "#dff209";
+    let anchorOffset = 0;
+    let currentSelectObj ={};
+    document.onmouseup =() =>{
+        var selectObj = window.getSelection()
+        let temSelectObj = getSelectobj(selectObj);
+        var tempdt = getColumnName(selectObj.anchorNode);
+        if(tempdt != undefined && selectObj.toString()!=''){
+            currentSelectObj = temSelectObj;
+            currentSelectObj.color = currentColor;
+            currentSelectObj.Type = 0;
+            // currentSelectObj.patentNo = this.patent.publicNo
+            // this.showPizhu();
+
+            isMarking = true;
+            
+        }
+        else{
+          currentSelectObj = {};
+        }
+        
+       console.log(currentSelectObj)
+    //    chrome.runtime.sendMessage('highlight', (response) => {
+    //         console.log('received user data', response);
+    //     });
+    }
+    function getSelectobj(selectObj){
+        var temNode = selectObj.anchorNode;
+        var a = temNode.parentElement
+        NotIncludeDataType(a)
+          function NotIncludeDataType(node){
+          if (node.getAttribute("data-type") != null) {
+            temNode = node
+          } else {
+            NotIncludeDataType(node.parentElement);
+          }
+        }
+        let index =0;
+        getColumn(temNode,selectObj);
+  
+        return {"Id":uuid(),"column":temNode.getAttribute("data-type"),"index":anchorOffset,"text":selectObj.toString(),'temNode':temNode};
+  
+    }
+    function uuid() {
+        var s = [];
+        var hexDigits = "0123456789abcdef";
+        for (var i = 0; i < 36; i++) {
+            s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
         }
-    );
+        s[14] = "4";  // bits 12-15 of the time_hi_and_version field to 0010
+        s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);  // bits 6-7 of the clock_seq_hi_and_reserved to 01
+        s[8] = s[13] = s[18] = s[23] = "-";
+    
+        var uuid = s.join("");
+        return uuid;
+    }
+    function getColumnName(el){
+        let root = el;
+  
+        if(el == undefined){
+            return undefined;
+        }
+  
+        if(!(el instanceof HTMLElement)){
+            root = el.parentElement;
+        }
+        
+  
+        let dt = root.getAttribute("data-Type");
+  
+        if (dt != undefined){
+            return root;
+        }
+        
+        return dt = getColumnName(root.parentElement);
+  
+    }
+    function getColumn(node,selectObj){
+          if(node != selectObj.anchorNode){
+              if(node.nodeValue != null ){
+                anchorOffset += node.nodeValue.trim().length;
+              }
+              let iIndex =0;
+              while(iIndex<node.childNodes.length){
+                  if(getColumn(node.childNodes[iIndex],selectObj)){
+                      return true;
+                  }
+                  iIndex +=1;
+              }
+              return false;
+          }
+          else{
+            if(selectObj.anchorNode.nodeValue!=null){
+              if(selectObj.extentOffset>=selectObj.anchorOffset){
+                anchorOffset += selectObj.anchorOffset - selectObj.anchorNode.nodeValue.length + selectObj.anchorNode.nodeValue.trimStart().length;
+              }else{
+                anchorOffset += selectObj.extentOffset - selectObj.extentNode.nodeValue.length + selectObj.extentNode.nodeValue.trimStart().length;
+              }
+               
+            }
+              return true;
+          }
+      }
+})
+
+        // chrome.runtime.onConnect.addListener(function(msg) {
+        //     console.log(msg)
+        //     console.assert(port.name == "knockknock");
+        //     port.onMessage.addListener(function(msg) {
+        //         console.log(msg)
+        //         if (msg.joke == "Knock knock")
+        //         port.postMessage({question: "Who's there?"});
+        //         else if (msg.answer == "Madame")
+        //         port.postMessage({question: "Madame who?"});
+        //         else if (msg.answer == "Madame... Bovary")
+        //         port.postMessage({question: "I don't get it."});
+        //     });
+        // });
 
     chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {//监听扩展程序进程或内容脚本发送请求的请求
+        // window.alert(JSON.stringify(document))
+  
         console.log('content', request, sender);
+        sendResponse({title:'传送'})
+        return true;
+        // render(1)
         // const {
         //     inputColorValue,
         //     titleValue,

+ 14 - 4
PIU_FrontEnd/manifest.json

@@ -16,14 +16,23 @@
     "options_page":"options.html",
 
     "background":{
-        "scripts":["eventPage.js"],
+        "scripts":[
+            "jquery-3.1.1.min.js",
+            "background.js"
+        ],
         "persistent":false
     },
 
     "content_scripts": [
         {
-            "matches": ["*://*/*","<all_urls>"],
-            "js": ["content.js"]
+            "matches": [
+                "http://*/*",
+                "https://*/*"
+            ],
+            "js": [
+                "jquery-3.1.1.min.js",
+                "content.js"
+            ]
         }
     ],
 
@@ -31,7 +40,8 @@
         "storage",
         "notifications",
         "contextMenus",
-        "*://*/*",
+        "http://*/*",
+        "https://*/*",
         "tabs",
         "activeTab"
     ]

+ 6 - 3
PIU_FrontEnd/popup.js

@@ -6,10 +6,13 @@ $(function(){
         //     window.alert(tab.id)
         //     chrome.runtime.sendMessage('你好');
         // });
-        chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
-            chrome.tabs.sendMessage(tabs[0].id, {}, function (response) {
+        chrome.tabs.getSelected(null, function (tabs) {
+            // window.alert(tabs.id)
+            console.log(tabs.id)
+            chrome.tabs.sendMessage(tabs.id,{method:'getSelection'}, function (response) {
+                window.alert(JSON.stringify(response))
                 console.log(response, 'content.js回传过来的信息');
-       });
+            });
     });
 
         // var notifications = {

+ 5 - 2
PIU_FrontEnd/说明手册.txt

@@ -16,7 +16,7 @@
     "options_page":"options.html",//选项页
 
     "background":{//背景页(操作网页)
-        "scripts":["eventPage.js"],
+        "scripts":["background.js"],
         "persistent":false
     },
 
@@ -25,4 +25,7 @@
         "notifications",
         "contextMenus"
     ]
-}
+}
+
+/* background  popup  content之间的通信 */
+https://blog.csdn.net/yizhiliudaji/article/details/126409572