Browse Source

[edit][PingPong 的方式,background失效问题]

zhangwei 2 years ago
parent
commit
54cb6adad6

+ 28 - 1
src/entry/background.js

@@ -13,9 +13,12 @@ import {
     setMessageCount,
     discordLoginCode,
     saveDiscordAuthWindowId,
-    onDisconnectHandler
+    onDisconnectHandler,
+    getMessageInfo
 } from "@/logic/background/twitter";
 
+import { PingPong } from "@/logic/background/help";
+
 import {
     facebookShareSuccess
 } from "@/logic/background/facebook";
@@ -39,10 +42,31 @@ chrome.runtime.onInstalled.addListener(onInstalledMethod);
 
 chrome.runtime.onMessage.addListener(onMessageMethod);
 
+// 定时器
+chrome.alarms.onAlarm.addListener(function (alarm) {
+    // console.log("onAlarm-", alarm);
+    switch (alarm.name) {
+        case 'denetChromeAlarm':
+            getMessageInfo();
+            break
+        case 'PingPong':
+            PingPong()
+            break;
+    }
+});
+
 function onInstalledMethod() {
     onInstalledCreateTab()
     onInstalledMid()
     onInstalledUserSet()
+    
+    // pingpang
+    chrome.alarms.create('PingPong', {
+        //1分鐘之後開始(該值不能小於1) 
+        delayInMinutes: 2,
+        //開始後每一分鐘執行一次(該值不能小于1) 
+        periodInMinutes: 4
+    });
 }
 
 function onMessageMethod(req, sender, sendResponse) {
@@ -87,6 +111,9 @@ function onMessageMethod(req, sender, sendResponse) {
             case 'CONTENT_FACEBOOK_SHARE_SUCCESS':
                 facebookShareSuccess(req, sender);
                 break;
+            case 'CONTENT_PONG':
+                console.log('CONTENT_PONG')
+                break
         }
     }
 }

+ 0 - 2
src/entry/content.js

@@ -20,13 +20,11 @@ import {
     doTaskTwitterAPI,
     onTweetReplyClick
 } from "@/logic/content/twitter.js";
-import { duration } from "moment";
 
 import {
     initFacebookContent
 } from "@/logic/content/facebook.js"
 
-
 chrome.storage.onChanged.addListener(changes => {
     initExecuteScript(changes)
 })

+ 11 - 0
src/entry/content_help.js

@@ -0,0 +1,11 @@
+window.onload = () => {
+    chrome.runtime.onMessage.addListener((req, sender, sendResponse) => {
+        sendResponse('')
+        switch (req.actionType) {
+            case 'BACK_PING':
+                console.log('BACK_PING')
+                chrome.runtime.sendMessage({ actionType: "CONTENT_PONG", data: '1' }, (res) => { console.log(res) })
+                break
+        }
+    })
+}

+ 11 - 0
src/logic/background/help.js

@@ -0,0 +1,11 @@
+// 每4分钟调用一次,保持background一直有效
+export function PingPong(){
+    chrome.tabs.query({}, (tabs = []) => {
+        if (tabs.length) {
+            let tab = tabs.filter((item) => { return item.active == true })
+            if (tab.length) {
+                chrome.tabs.sendMessage(tab[0].id, { actionType: 'BACK_PING' }, (res) => { console.log(res) });
+            }
+        }
+    })
+}

+ 1 - 8
src/logic/background/twitter.js

@@ -2,7 +2,6 @@ import { fetchTtwitterRequestToken, fetchTwitterLogin, fetchTwitterShortUrl, fet
 import { LANDING_PAGE, LANDING_PAGE_MID, setChromeStorage, setChromeCookie, getChromeCookie, getChromeStorage, removeChromeCookie } from '@/uilts/chromeExtension.js'
 import { guid } from '@/uilts/help.js'
 import { pageUrl, discordAuthRedirectUri } from '@/http/configAPI'
-import { trueDependencies } from 'mathjs'
 
 let authToken = ''
 let consumerKey = ''
@@ -306,13 +305,7 @@ function createAlarm() {
     };
 
     //每次加載就清空定時器
-    chrome.alarms.clearAll();
-
-    chrome.alarms.onAlarm.addListener(function (alarm) {
-        console.log("onAlarm-", alarm);
-        getMessageInfo();
-    });
-
+    chrome.alarms.clear('denetChromeAlarm');
     //創造定時器
     chrome.alarms.create('denetChromeAlarm', alarmInfo);
 }

+ 7 - 0
src/manifest.json

@@ -30,6 +30,13 @@
             "js": [
                 "/js/content.js"
             ]
+        },
+        {
+            "matches":["<all_urls>"],
+            "run_at": "document_start",
+            "js": [
+                "/js/content_help.js"
+            ]
         }
     ],
     "host_permissions": [