@@ -23,26 +23,20 @@ const oldLogo = `
23
23
</svg>
24
24
` ;
25
25
26
- window . addEventListener ( "load" , function ( ) {
27
- var state = localStorage . getItem ( "enableBluebird" ) ;
28
- if ( ! state ) {
29
- state = "off" ;
30
- this . localStorage . setItem ( "enableBluebird" , "off" ) ;
31
- }
32
-
33
- if ( state === "on" ) {
34
- const jsInitCheckTimer = setInterval ( pageLoaded , 1 ) ;
35
- function pageLoaded ( ) {
36
- var logoDOM = document . getElementsByXPath ( "//h1/a/div" ) ;
37
- if ( logoDOM . length > 0 ) {
38
- logoDOM [ 0 ] . innerHTML = oldLogo ;
39
- clearInterval ( jsInitCheckTimer ) ;
40
- }
41
- }
42
- }
43
- } ) ;
26
+ const oldSplashLogo = `
27
+ <svg
28
+ viewBox="0 0 24 24"
29
+ aria-hidden="true"
30
+ class="r-16ek5rh r-4qtqp9 r-yyyyoo r-16y2uox r-8kz0gk r-dnmrzs r-bnwqim r-1plcrui r-lrvibr r-lrsllp"
31
+ style="color: rgba(29,155,240,1.00);width: 72px;height: 72pxmargin-bottom: auto;margin-left: auto;margin-right: auto;margin-top: auto;top: 0px;bottom: 0px;right: 0px;left: 0px"
32
+ >
33
+ <g>
34
+ <path d="M23.643 4.937c-.835.37-1.732.62-2.675.733.962-.576 1.7-1.49 2.048-2.578-.9.534-1.897.922-2.958 1.13-.85-.904-2.06-1.47-3.4-1.47-2.572 0-4.658 2.086-4.658 4.66 0 .364.042.718.12 1.06-3.873-.195-7.304-2.05-9.602-4.868-.4.69-.63 1.49-.63 2.342 0 1.616.823 3.043 2.072 3.878-.764-.025-1.482-.234-2.11-.583v.06c0 2.257 1.605 4.14 3.737 4.568-.392.106-.803.162-1.227.162-.3 0-.593-.028-.877-.082.593 1.85 2.313 3.198 4.352 3.234-1.595 1.25-3.604 1.995-5.786 1.995-.376 0-.747-.022-1.112-.065 2.062 1.323 4.51 2.093 7.14 2.093 8.57 0 13.255-7.098 13.255-13.254 0-.2-.005-.402-.014-.602.91-.658 1.7-1.477 2.323-2.41z"></path>
35
+ </g>
36
+ </svg>
37
+ ` ;
44
38
45
- document . getElementsByXPath = function ( expression , parentElement ) {
39
+ function getElementsByXPath ( expression , parentElement ) {
46
40
var r = [ ] ;
47
41
var x = document . evaluate (
48
42
expression ,
@@ -55,7 +49,81 @@ document.getElementsByXPath = function (expression, parentElement) {
55
49
r . push ( x . snapshotItem ( i ) ) ;
56
50
}
57
51
return r ;
58
- } ;
52
+ }
53
+
54
+ // favicon window logo and title
55
+ function faviconTitleReplace ( ) {
56
+ var state = localStorage . getItem ( "enableBluebird" ) ;
57
+ // favicon
58
+ const linkDOM = document . getElementsByTagName ( "link" ) ;
59
+ for ( let i = 0 ; i < linkDOM . length ; i ++ ) {
60
+ const element = linkDOM [ i ] ;
61
+ if ( element . rel === "shortcut icon" ) {
62
+ if ( state === "on" ) {
63
+ element . href = element . href . replace ( "3" , "2" ) ;
64
+ } else {
65
+ element . href = element . href . replace ( "2" , "3" ) ;
66
+ }
67
+ }
68
+ }
69
+
70
+ // title (og)
71
+ const metaDOM = document . getElementsByTagName ( "meta" ) ;
72
+ for ( let i = 0 ; i < metaDOM . length ; i ++ ) {
73
+ const element = metaDOM [ i ] ;
74
+ if (
75
+ element . content . indexOf ( "/ X" ) !== - 1 ||
76
+ element . content . indexOf ( "/ Twitter" ) !== - 1
77
+ ) {
78
+ if ( state === "on" ) {
79
+ element . content = element . content . replace ( "X" , "Twitter" ) ;
80
+ } else {
81
+ element . content = element . content . replace ( "Twitter" , "X" ) ;
82
+ }
83
+ }
84
+ }
85
+
86
+ // title (main)
87
+ const titleDOM = document . getElementsByTagName ( "title" ) ;
88
+ if ( titleDOM . length > 0 ) {
89
+ if ( state === "on" && titleDOM [ 0 ] . innerHTML . indexOf ( "X" ) !== - 1 ) {
90
+ titleDOM [ 0 ] . innerHTML = titleDOM [ 0 ] . innerHTML . replace ( "X" , "Twitter" ) ;
91
+ } else if (
92
+ state === "off" &&
93
+ titleDOM [ 0 ] . innerHTML . indexOf ( "Twitter" ) !== - 1
94
+ ) {
95
+ titleDOM [ 0 ] . innerHTML = titleDOM [ 0 ] . innerHTML . replace ( "Twitter" , "X" ) ;
96
+ }
97
+ }
98
+ }
99
+
100
+ var state = localStorage . getItem ( "enableBluebird" ) ;
101
+ if ( ! state ) {
102
+ state = "off" ;
103
+ localStorage . setItem ( "enableBluebird" , "off" ) ;
104
+ } else if ( state === "on" ) {
105
+ const mainLogoInterval = setInterval ( mainLogoReplace ) ;
106
+ const splashLogoInterval = setInterval ( splashLogoReplace ) ;
107
+ setInterval ( faviconTitleReplace ) ;
108
+
109
+ // main window logo
110
+ function mainLogoReplace ( ) {
111
+ const logoDOM = getElementsByXPath ( "//h1/a/div" ) ;
112
+ if ( logoDOM . length > 0 ) {
113
+ logoDOM [ 0 ] . innerHTML = oldLogo ;
114
+ clearInterval ( mainLogoInterval ) ;
115
+ }
116
+ }
117
+
118
+ // splash window logo
119
+ function splashLogoReplace ( ) {
120
+ const logoDOM = getElementsByXPath ( '//div[@aria-label="Loading…"]' ) ;
121
+ if ( logoDOM . length > 0 ) {
122
+ logoDOM [ 0 ] . innerHTML = oldSplashLogo ;
123
+ clearInterval ( splashLogoInterval ) ;
124
+ }
125
+ }
126
+ }
59
127
60
128
chrome . runtime . onMessage . addListener ( function ( msg , sender , sendResponse ) {
61
129
if ( msg . cmd === "check" ) {
@@ -68,7 +136,7 @@ chrome.runtime.onMessage.addListener(function (msg, sender, sendResponse) {
68
136
sendResponse ( state ) ;
69
137
} else if ( msg . cmd == "replace" ) {
70
138
// run replace
71
- var logoDOM = document . getElementsByXPath ( "//h1/a/div" ) ;
139
+ var logoDOM = getElementsByXPath ( "//h1/a/div" ) ;
72
140
if ( logoDOM . length === 0 ) {
73
141
sendResponse ( undefined ) ;
74
142
} else {
0 commit comments