1+ // common functions
2+ window . mobileCheck = function ( ) {
3+ let check = false ;
4+ ( function ( a ) { if ( / ( a n d r o i d | b b \d + | m e e g o ) .+ m o b i l e | a v a n t g o | b a d a \/ | b l a c k b e r r y | b l a z e r | c o m p a l | e l a i n e | f e n n e c | h i p t o p | i e m o b i l e | i p ( h o n e | o d ) | i r i s | k i n d l e | l g e | m a e m o | m i d p | m m p | m o b i l e .+ f i r e f o x | n e t f r o n t | o p e r a m ( o b | i n ) i | p a l m ( o s ) ? | p h o n e | p ( i x i | r e ) \/ | p l u c k e r | p o c k e t | p s p | s e r i e s ( 4 | 6 ) 0 | s y m b i a n | t r e o | u p \. ( b r o w s e r | l i n k ) | v o d a f o n e | w a p | w i n d o w s c e | x d a | x i i n o / i. test ( a ) || / 1 2 0 7 | 6 3 1 0 | 6 5 9 0 | 3 g s o | 4 t h p | 5 0 [ 1 - 6 ] i | 7 7 0 s | 8 0 2 s | a w a | a b a c | a c ( e r | o o | s \- ) | a i ( k o | r n ) | a l ( a v | c a | c o ) | a m o i | a n ( e x | n y | y w ) | a p t u | a r ( c h | g o ) | a s ( t e | u s ) | a t t w | a u ( d i | \- m | r | s ) | a v a n | b e ( c k | l l | n q ) | b i ( l b | r d ) | b l ( a c | a z ) | b r ( e | v ) w | b u m b | b w \- ( n | u ) | c 5 5 \/ | c a p i | c c w a | c d m \- | c e l l | c h t m | c l d c | c m d \- | c o ( m p | n d ) | c r a w | d a ( i t | l l | n g ) | d b t e | d c \- s | d e v i | d i c a | d m o b | d o ( c | p ) o | d s ( 1 2 | \- d ) | e l ( 4 9 | a i ) | e m ( l 2 | u l ) | e r ( i c | k 0 ) | e s l 8 | e z ( [ 4 - 7 ] 0 | o s | w a | z e ) | f e t c | f l y ( \- | _ ) | g 1 u | g 5 6 0 | g e n e | g f \- 5 | g \- m o | g o ( \. w | o d ) | g r ( a d | u n ) | h a i e | h c i t | h d \- ( m | p | t ) | h e i \- | h i ( p t | t a ) | h p ( i | i p ) | h s \- c | h t ( c ( \- | | _ | a | g | p | s | t ) | t p ) | h u ( a w | t c ) | i \- ( 2 0 | g o | m a ) | i 2 3 0 | i a c ( | \- | \/ ) | i b r o | i d e a | i g 0 1 | i k o m | i m 1 k | i n n o | i p a q | i r i s | j a ( t | v ) a | j b r o | j e m u | j i g s | k d d i | k e j i | k g t ( | \/ ) | k l o n | k p t | k w c \- | k y o ( c | k ) | l e ( n o | x i ) | l g ( g | \/ ( k | l | u ) | 5 0 | 5 4 | \- [ a - w ] ) | l i b w | l y n x | m 1 \- w | m 3 g a | m 5 0 \/ | m a ( t e | u i | x o ) | m c ( 0 1 | 2 1 | c a ) | m \- c r | m e ( r c | r i ) | m i ( o 8 | o a | t s ) | m m e f | m o ( 0 1 | 0 2 | b i | d e | d o | t ( \- | | o | v ) | z z ) | m t ( 5 0 | p 1 | v ) | m w b p | m y w a | n 1 0 [ 0 - 2 ] | n 2 0 [ 2 - 3 ] | n 3 0 ( 0 | 2 ) | n 5 0 ( 0 | 2 | 5 ) | n 7 ( 0 ( 0 | 1 ) | 1 0 ) | n e ( ( c | m ) \- | o n | t f | w f | w g | w t ) | n o k ( 6 | i ) | n z p h | o 2 i m | o p ( t i | w v ) | o r a n | o w g 1 | p 8 0 0 | p a n ( a | d | t ) | p d x g | p g ( 1 3 | \- ( [ 1 - 8 ] | c ) ) | p h i l | p i r e | p l ( a y | u c ) | p n \- 2 | p o ( c k | r t | s e ) | p r o x | p s i o | p t \- g | q a \- a | q c ( 0 7 | 1 2 | 2 1 | 3 2 | 6 0 | \- [ 2 - 7 ] | i \- ) | q t e k | r 3 8 0 | r 6 0 0 | r a k s | r i m 9 | r o ( v e | z o ) | s 5 5 \/ | s a ( g e | m a | m m | m s | n y | v a ) | s c ( 0 1 | h \- | o o | p \- ) | s d k \/ | s e ( c ( \- | 0 | 1 ) | 4 7 | m c | n d | r i ) | s g h \- | s h a r | s i e ( \- | m ) | s k \- 0 | s l ( 4 5 | i d ) | s m ( a l | a r | b 3 | i t | t 5 ) | s o ( f t | n y ) | s p ( 0 1 | h \- | v \- | v ) | s y ( 0 1 | m b ) | t 2 ( 1 8 | 5 0 ) | t 6 ( 0 0 | 1 0 | 1 8 ) | t a ( g t | l k ) | t c l \- | t d g \- | t e l ( i | m ) | t i m \- | t \- m o | t o ( p l | s h ) | t s ( 7 0 | m \- | m 3 | m 5 ) | t x \- 9 | u p ( \. b | g 1 | s i ) | u t s t | v 4 0 0 | v 7 5 0 | v e r i | v i ( r g | t e ) | v k ( 4 0 | 5 [ 0 - 3 ] | \- v ) | v m 4 0 | v o d a | v u l c | v x ( 5 2 | 5 3 | 6 0 | 6 1 | 7 0 | 8 0 | 8 1 | 8 3 | 8 5 | 9 8 ) | w 3 c ( \- | ) | w e b c | w h i t | w i ( g | n c | n w ) | w m l b | w o n u | x 7 0 0 | y a s \- | y o u r | z e t o | z t e \- / i. test ( a . substr ( 0 , 4 ) ) ) check = true ; } ) ( navigator . userAgent || navigator . vendor || window . opera ) ;
5+ return check ;
6+ } ;
7+
18// load sw.js
29if ( "serviceWorker" in navigator ) {
310 window . addEventListener ( "load" , ( ) => {
@@ -138,28 +145,37 @@ function addQRPart(html) {
138145async function html2Img ( html ) {
139146 let div = document . createElement ( 'div' ) ;
140147 div . id = 'capture' ;
141- div . setAttribute ( 'style' , 'padding: 30px 20px;background: #000;color: #f7f4cb;font-family: "LXGW WenKai";' ) ;
148+ div . setAttribute ( 'style' , 'padding: 30px 20px;background: #000;color: #f7f4cb;font-family: "LXGW WenKai";max-width: 768px;margin: auto; ' ) ;
142149 div . innerHTML = html ;
143150 addDatePart ( div ) ;
144151 let footer = document . createElement ( 'div' ) ;
145152 footer . setAttribute ( 'style' , 'display: flex;flex-direction: row;justify-content: space-between;align-items: center;margin-top: 20px;padding-top: -20px;padding-top: -20px;border-top-style: dashed;border-top-width: 1px;padding-top: 10px;' ) ;
146153 addAuthorPart ( footer ) ;
147154 addQRPart ( footer ) ;
148155 div . appendChild ( footer ) ;
156+ let bodyBackup = document . body ;
157+ if ( window . mobileCheck ( ) ) {
158+ document . body = document . createElement ( "body" ) ;
159+ }
149160 document . body . appendChild ( div ) ;
150161 let canvas = await html2canvas ( div , { allowTaint : true , useCORS : true } ) ;
162+ if ( window . mobileCheck ( ) ) {
163+ document . body = bodyBackup ;
164+ } else {
165+ document . body . removeChild ( div ) ;
166+ }
151167 let dataURL = canvas . toDataURL ( "image/png" ) ;
152- const blob = dataURItoBlob ( dataURL ) ;
153- const data = {
154- files : [
155- new File ( [ blob ] , document . querySelector ( '.title' ) . textContent + '.png' , {
156- type : blob . type ,
157- } ) ,
158- ] ,
159- // title: document.title,
160- // text: text,
161- } ;
162168 if ( navigator . canShare && navigator . canShare ( data ) ) {
169+ const blob = dataURItoBlob ( dataURL ) ;
170+ const data = {
171+ files : [
172+ new File ( [ blob ] , document . querySelector ( '.title' ) . textContent + '.png' , {
173+ type : blob . type ,
174+ } ) ,
175+ ] ,
176+ // title: document.title,
177+ // text: text,
178+ } ;
163179 try {
164180 await navigator . share ( data ) ;
165181 ga ( 'gtag_UA_154678195_1.send' , {
@@ -183,10 +199,17 @@ async function html2Img(html) {
183199 umami . trackEvent ( 'bookmark_fail' , 'bookmark' ) ;
184200 }
185201 } else {
186- launch_toast ( "浏览器不支持此功能" ) ;
187- console . log ( `Your system doesn't support sharing files.` ) ;
202+ let modal = document . getElementById ( "the-modal" ) ;
203+ var modalImg = document . getElementById ( "the-modal-img01" ) ;
204+ modal . style . display = "block" ;
205+ modalImg . src = dataURL ;
206+ // Get the <span> element that closes the modal
207+ var span = document . getElementsByClassName ( "the-modal-close" ) [ 0 ] ;
208+ // When the user clicks on <span> (x), close the modal
209+ span . onclick = function ( ) {
210+ modal . style . display = "none" ;
211+ }
188212 }
189- document . body . removeChild ( div ) ;
190213}
191214
192215async function oncontroldown ( event ) {
@@ -216,16 +239,14 @@ function webShare() {
216239
217240 elements . forEach ( i => {
218241 i . onpointerup = ( ) => {
219- if ( navigator . canShare ) {
220- let selection = document . getSelection ( ) , text = selection . toString ( ) ;
221- if ( text !== "" ) {
222- let rect = selection . getRangeAt ( 0 ) . getBoundingClientRect ( ) ;
223- let articleY = document . body . getBoundingClientRect ( ) . top ;
224- control . style . top = `calc(${ rect . bottom } px - ${ articleY } px + 20px)` ;
225- control . style . left = `calc(${ rect . left } px + calc(${ rect . width } px / 2) - 30px)` ;
226- control [ 'html' ] = getSelectionHtml ( ) ;
227- document . body . appendChild ( control ) ;
228- }
242+ let selection = document . getSelection ( ) , text = selection . toString ( ) ;
243+ if ( text !== "" ) {
244+ let rect = selection . getRangeAt ( 0 ) . getBoundingClientRect ( ) ;
245+ let articleY = document . body . getBoundingClientRect ( ) . top ;
246+ control . style . top = `calc(${ rect . bottom } px - ${ articleY } px + 20px)` ;
247+ control . style . left = `calc(${ rect . left } px + calc(${ rect . width } px / 2) - 30px)` ;
248+ control [ 'html' ] = getSelectionHtml ( ) ;
249+ document . body . appendChild ( control ) ;
229250 }
230251 }
231252 } ) ;
@@ -252,12 +273,6 @@ if( document.readyState !== 'loading' ) {
252273
253274// remove dashboard iframe on mobile
254275
255- // window.mobileCheck = function() {
256- // let check = false;
257- // (function(a){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))) check = true;})(navigator.userAgent||navigator.vendor||window.opera);
258- // return check;
259- // };
260-
261276// var dashboard = document.getElementById("dashboard_iframe");
262277
263278// if (window.mobileCheck()) {
0 commit comments