|
@@ -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()
|