nieyuge 2 gadi atpakaļ
vecāks
revīzija
5f09ee53f5

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

@@ -195,7 +195,7 @@ export function onInstalledUserSet() {
         // 无刷新插入js
         chrome.tabs.query({}, (tab) => {
             for (let i in tab) {
-                if (tab[i].url.indexOf('twitter.com') >= 0) {
+                if (tab[i].url.indexOf('twitter.com') >= 0 || tab[i].url.indexOf('facebook.com') >= 0) {
                     chrome.scripting.executeScript({
                         target: { tabId: tab[i].id },
                         files: ['js/content.js'],

+ 72 - 4
src/logic/content/ParseCard.js

@@ -18,7 +18,7 @@ class ParseCard {
         let _html
         for (let i in arr_article) {
             _html = arr_article[i].innerHTML || ''
-            if (_html.includes('denetme.net') && !this.isHasIframeByArticle(arr_article[i])) {
+            if (_html.includes('denetme.net') && !this.isHasIframeByFacebook(arr_article[i])) {
                 de_net_card.push({
                     time: new Date().getTime(),
                     dom: arr_article[i]
@@ -62,6 +62,43 @@ class ParseCard {
         }
         return { tweet_Id, short_url, dom_card }
     }
+    parseFaceBookParmas(dom_card) {
+        let tweet_Id = ''
+        let short_url = ''
+        let a_arr = dom_card.querySelectorAll('a[role="link"]') || []
+        a_arr = Array.from(a_arr).reverse()
+        for (let i in a_arr) {
+            // 获取推特id
+            if (a_arr[i].href.indexOf('facebook.com') > 0) {
+                let faceUrl = new URL(a_arr[i]);
+                let faceSearch = new URLSearchParams(faceUrl.search);
+                let faceJumpUrl = decodeURIComponent(faceSearch.get('u'));
+                if (faceJumpUrl !== 'null') {
+                    let urlArr = new URL(faceJumpUrl);
+                    let searchArr = new URLSearchParams(urlArr.search);
+                    if (!tweet_Id) {
+                        tweet_Id = searchArr.get('tweetId')
+                    }
+                    if (!short_url) {
+                        short_url = faceJumpUrl
+                    }
+                }
+            } else {
+                if (a_arr[i].href.indexOf('denetme.net') > 0 && !tweet_Id) {
+                    let urlArr = new URL(a_arr[i]);
+                    let searchArr = new URLSearchParams(urlArr.search);
+                    tweet_Id = searchArr.get('tweetId')
+                }
+                if (a_arr[i].href.indexOf('denetme.net') > 0 && !short_url) {
+                    short_url = a_arr[i].href
+                }
+            }
+            if (tweet_Id && short_url) {
+                break
+            }
+        }
+        return { tweet_Id, short_url, dom_card }
+    }
     hideCard() {
         if (dom.querySelector('iframe')) {
             return
@@ -81,7 +118,7 @@ class ParseCard {
     parseFacebookCardParmas() {
         let json_data = []
         this.parseFaceBookCard().forEach((item) => {
-            let _obj = this.parseCardParmas(item.dom)
+            let _obj = this.parseFaceBookParmas(item.dom)
             if (_obj.tweet_Id && _obj.short_url && _obj.dom_card) {
                 _obj.time = item.time
                 json_data.push(_obj)
@@ -144,11 +181,14 @@ class ParseCard {
         return _array
     }
 
-    createIframe(post_Id, tweet_Id) {
+    createIframe(post_Id, tweet_Id, if_center = false) {
         let _iframe = document.createElement('iframe')
         _iframe.id = post_Id
         _iframe.src = chrome.runtime.getURL('/iframe/red-packet.html') + `?postId=${post_Id}&tweetId=${tweet_Id}`;
-        _iframe.style.cssText = 'border: medium none; width:375px;min-height:500px;'
+        _iframe.style.cssText = 'border:medium none; width:375px; min-height:500px;'
+        if (if_center) {
+            _iframe.style.cssText = 'border:medium none; width:375px; min-height:500px; display:block; margin:auto;'
+        }
         return _iframe
     }
     isHasIframeByArticle(dom_card) {
@@ -200,6 +240,15 @@ class ParseCard {
         }
         return false
     }
+    isHasIframeByFacebook(dom_card) {
+        if (!dom_card || !dom_card.parentElement) {
+            return
+        }
+        if (dom_card.querySelector('iframe')) {
+            return true
+        }
+        return false
+    }
     replaceDOMRedPacket({ dom_card, tweet_Id, post_Id, time, short_url }) {
         if (!dom_card || !dom_card.parentElement) {
             return
@@ -234,5 +283,24 @@ class ParseCard {
         }
 
     }
+    replaceFacebookPacket({ dom_card, tweet_Id, short_url }) {
+        if (!dom_card || !dom_card.parentElement) {
+            return
+        }
+        let dom = dom_card.querySelector('div[id^=jsc_c_][class=l9j0dhe7]')
+            dom.style = 'min-height:500px'
+        if (dom) {
+            for (let i = 0; i < dom.childNodes.length; i++) {
+                if (dom.children[i].tagName.toLowerCase() != 'iframe') {
+                    dom.children[i].style.display = 'none'
+                }
+            }
+
+            let originUrl = new URL(short_url);
+            let post_Id = originUrl.pathname.slice(1);
+
+            dom.appendChild(this.createIframe(post_Id, tweet_Id, true))
+        }
+    }
 }
 export default new ParseCard()

+ 13 - 14
src/logic/content/twitter.js

@@ -551,21 +551,24 @@ function setIframeRedPacket(type = 'twitter') {
     switch(type) {
         case 'facebook':
             card_json_data = parseCard.parseFacebookCardParmas()
+            for (let i in card_json_data) {
+                parseCard.replaceFacebookPacket(card_json_data[i])
+            }
             break;
         default:
             card_json_data = parseCard.parseAllDeNetCardParmas()
+            // 过滤出可以请求的短链接
+            parseCard.getCardParmas(card_json_data).then((res) => {
+                for (let i in res.has_post_Id_card_data) {
+                    parseCard.replaceDOMRedPacket(res.has_post_Id_card_data[i])
+                }
+                if (res.need_net_short_url.length > 0) {
+                    // 请求短链接
+                    chrome.runtime.sendMessage({ actionType: "CONTENT_TWITTER_SHORT_LINK", data: "", arr_url: res.need_net_short_url }, () => { })
+                }
+            })
             break;
     }
-    // 过滤出可以请求的短链接
-    parseCard.getCardParmas(card_json_data).then((res) => {
-        for (let i in res.has_post_Id_card_data) {
-            parseCard.replaceDOMRedPacket(res.has_post_Id_card_data[i])
-        }
-        if (res.need_net_short_url.length > 0) {
-            // 请求短链接
-            chrome.runtime.sendMessage({ actionType: "CONTENT_TWITTER_SHORT_LINK", data: "", arr_url: res.need_net_short_url }, () => { })
-        }
-    })
 }
 
 // 监听点击发推 按钮绑定事件
@@ -636,11 +639,7 @@ export function init() {
                     onChangePageMain(inFacebookNode)
                     changeQueueNum(1)
                 }
-                if (queue_num <= 0) {
-                    return
-                }
                 setIframeRedPacket('facebook')
-                changeQueueNum(-1)
             }, 1000)
         }
     }, 1000);