TypeScript圖形渲染實戰:2D架構設計與實現》 —1.2.4 第一個TypeScript程序

      網友投稿 722 2022-05-30

      1.2.4? 第一個TypeScript程序

      作為本書的第一個Demo,我們使用TypeScript構建一個簡單的Web應用程序:使用Canvas2D居中繪制Hello World。

      首先在桌面上單擊右鍵,在彈出的菜單中選擇新建文件夾選項,命名為HelloWorld。然后將新建的文件夾拖曳到程序塢中的VS Code圖標上,啟動VS Code應用程序。單擊新建文件按鈕,創建一個名為index.html的文件,如圖1.11所示。

      圖1.11? 新建index.html文件

      接著打開index.html文件,使用Shift + Ctrl + P快捷方式打開命令面板,在輸入框中輸入insert snippet命令后,會出現“插入代碼片段”的命令,如圖1.12所示。

      圖1.12? 使用VS Code的插入代碼片段功能

      選擇“插入代碼片段”命令后再選擇html,就會自動生成如下HTML代碼:

      Page Title

      "main.css" />

      標簽中的文本內容替換為Hello World, <link>和<script>標簽內容保持不變,后續會使用TypeScrip Compiler生成main.js源文件。</p><p>在VS Code中創建一個名為main.css的文件,輸入如下代碼:</p><p>/*</p><p>CSS選擇器:# 表示ID選擇器</p><p>*/</p><p>#canvas {</p><p>background : #ffffff ;</p><p>margin-left : 10px ;</p><p>margin-top : 10px ;</p><p>-webkit-box-shadow : 4px 4px 8px rgba ( 0 , 0 , 0 , 0.5 ) ;</p><p>-moz-box-shadow : 4px 4px 8px rgba ( 0 , 0 , 0 , 0.5 ) ;</p><p>box-shadow : 4px 4px 8px rgba ( 0 , 0 , 0 , 0.5 ) ;</p><p>}</p><p>注意:CSS中僅可以使用/* */進行注釋。</p><p>在VS Code中創建一個名為main.ts的文件,輸入如下代碼:</p><p>class Canvas2DUtil {</p><p>//聲明public訪問級別的成員變量</p><p>public context : CanvasRenderingContext2D ;</p><p>// public訪問級別的構造函數</p><p>public constructor ( canvas : HTMLCanvasElement ) {</p><p>this . context = canvas . getContext ( "2d" ) ;</p><p>}</p><p>// public訪問級別的成員函數</p><p>public drawText ( text : string ) : void {</p><p>// Canvas2D和webGL這種底層繪圖API都是狀態機模式</p><p>//每次繪制前調用save將即將要修改的狀態記錄下來</p><p>//每次繪制后調用restore將已修改的狀態丟棄,恢復到初始化時的狀態</p><p>//這樣的好處是狀態不會混亂</p><p>//假設當前繪制文本使用紅色,如果你沒有使用save/restore配對函數的話</p><p>//則下次調用其他繪圖函數時,如果你沒更改顏色,則會繼續使用上次設置的紅色進行繪制</p><p>//隨著程序越來越復雜,如不使用save/restore來管理,最后整個渲染狀態會極其混亂</p><p>//請時刻保持使用save / restore配對函數來管理渲染狀態</p><p>this . context . save ( ) ;</p><p>//讓要繪制的文本居中對齊</p><p>this . context . textBaseline = "middle" ;</p><p>this . context . textAlign = "center" ;</p><p>//計算canvas的中心坐標</p><p style="text-align:center"><img src="http://m.bai1xia.com/news/zb_users/cache/ly_autoimg/m/MTY4NjM.jpg" alt="《TypeScript圖形渲染實戰:2D架構設計與實現》 —1.2.4 第一個TypeScript程序" title="《TypeScript圖形渲染實戰:2D架構設計與實現》 —1.2.4 第一個TypeScript程序" /></p><p>let centerX : number = this . context . canvas . width * 0.5 ;</p><p>let centerY : number = this . context . canvas . height * 0.5 ;</p><p>//紅色填充</p><p>// this . context . fillStyle = " red " ;</p><p>//調用文字填充命令</p><p>this . context . fillText ( text , centerX , centerY ) ;</p><p>//綠色描邊</p><p>this . context . strokeStyle = "green";</p><p>//調用文字描邊命令</p><p>this . context . strokeText ( text , centerX , centerY ) ;</p><p>//將上面context中的textAlign,extBaseLine,fillStyle,strokeStyle</p><p>狀態恢復到初始化狀態</p><p>this . context . restore ( ) ;</p><p>}</p><p>}</p><p>接下來調用Canvas2DUtil類,繪制居中對齊的文字。具體代碼如下:</p><p>let canvas : HTMLCanvasElement | null = document . getElementById ('canvas')</p><p>as HTMLCanvasElement ;</p><p>if ( canvas === null ) {</p><p>alert ( "無法獲取HTMLCanvasElement !!! " ) ;</p><p>throw new Error (? "無法獲取HTMLCanvasElement !!! " ) ;</p><p>}</p><p>let canvas2d : Canvas2DUtil = new Canvas2DUtil ( canvas ) ;</p><p>canvas2d . drawText ( "Hello World" ) ;</p><p>選擇“查看|集成終端”菜單項(或使用Ctrl+`快捷鍵)打開集成終端面板,使用tsc命令將TS代碼編譯(轉譯)成JS代碼:</p><p>tsc main.ts</p><p>當按回車鍵后會發現VS Code左側的資源管理中多了一個名為main.js的文件,如圖1.13所示,該main.js文件就是使用main.ts編譯(轉譯)后的結果。</p><p>圖1.13? 通過tsc命令將TS文件轉譯成JS文件</p><p>接下來,在index.html中的body標簽對內聲明一個canvas標簽,代碼如下:</p><p><body></p><p><canvas id = "canvas"? width = "800" height = "600" > </canvas></p><p></body></p><p>該canvas標簽的ID名稱必須和main.css中的CSS ID選擇器名稱一致,這樣才能使#canvas中設置的CSS屬性生效。</p><p>接著使用canvas元素的width / height屬性進行尺寸設置,當前設置的尺寸是800×600像素。如果沒有設置canvas元素的width / height屬性,默認情況下,瀏覽器所創建的canvas元素是300像素寬,150像素高。</p><p>為了能夠方便地運行HTML文件,引入一個名為open in browser的VS Code擴展插件。請單擊VS Code最左側的活動欄中的擴展圖標(或使用Shift + Ctrl + X快捷鍵)打開擴展面板,輸入Open in Browser后下載安裝,如圖1.14所示。</p><p>安裝完Open in Browser插件后,在VS Code中定位到HTML文件處,單擊右鍵顯示上下文菜單,即可使用該擴展,如圖1.15所示。</p><p>其中,Open In Default Browser(Alt + B快捷鍵)可直接在默認的瀏覽器中運行HTML文件。而Open in Other Browsers(Shift + Alt + B快捷鍵)則顯示如圖1.16所示面板,可以選擇想要運行的瀏覽器。</p><p>圖1.14? 從VS Code 應用商店下載安裝插件</p><p>圖1.15? 使用Open in Browser插件</p><p>圖1.16? Mac OS X 中可運行的瀏覽器</p><p>當運行index.html文件時可能會出現運行頁面出錯提示,如圖1.17所示。</p><p>圖1.17? 運行頁面出錯</p><p>之所以出現這個問題,是瀏覽器解析標簽順序導致的。參考上面的index.html代碼,會發現script標簽在canvas標簽前面,瀏覽器解析HTML時,先遇到script標簽,就去下載script標簽中的main.js腳本,然后開始運行這段腳本,此時腳本中引用的canvas元素實際并沒有解析完成,因此會彈出“無法獲取HTMLCanvasElement”提示。</p><p>有兩種修改代碼方式來解決這個問題,第一種修改方式是將script標簽放到canvas標簽后面。具體代碼如下:</p><p><body></p><p><canvas id = "canvas" width = "800" height = "600" > </canvas></p><p><script src = "main.js" > </script></p><p></body></p><p>第二種方式不用調整代碼順序,仍舊讓script放在<head> </head>中,并使用defer屬性。具體代碼如下:</p><p><head></p><p><script src = "main.js" defer > </script></p><p></head></p><p>defer屬性會讓腳本的執行延遲到整個文檔加載后再運行,這樣就能避免上面遇到的問題。</p><p>修正了上述問題后,繼續運行Open In Default Browser命令,程序正常運行,文字居中繪制,具體效果如圖1.18所示。</p><p>圖1.18? Hello World居中繪制</p><p>TypeScript HTML 渲染 架構設計</p><p> <strong>版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。</strong> </p></div> <div id="sosqawi" class="article_footer clear"> <div id="kokcyus" class="fr tag">標簽:<a href="http://m.bai1xia.com/news/tags-1738.html">TypeScript</a> <a href="http://m.bai1xia.com/news/tags-1739.html">圖形</a> <a href="http://m.bai1xia.com/news/tags-442.html">渲染</a> <a href="http://m.bai1xia.com/news/tags-233.html">實戰</a> </div> <div id="ckgousu" class="bdsharebuttonbox fl share"> <div id="cgg2ywo" class="share-widget fl"> <div id="4myue0q" class="social-share" data-sites="wechat,weibo, qq, qzone"></div> </div> </div> </div> <!-- 廣告位ad4 --> <div id="8e20s0g" class="post-navigation clear"> <div id="emkesg0" class="post-previous fl"> <span>上一篇:</span><a href="http://m.bai1xia.com/news/post/16862.html">C語言內存泄露很嚴重,如何應對?</a> </div> <div id="cm0kwao" class="post-next fr"> <span>下一篇:</span><a href="http://m.bai1xia.com/news/post/16865.html">Hadoop搭建偽分布式</a> </div> </div> </div> <div id="uqy2eqg" class="related_article"> <div id="wi2ocyw" class="box_title clear"> <span><i class="icon fa fa-paper-plane"></i>相關文章</span> </div> <div id="e2igqg0" class="related_list clear"> <article class="fl"> <div id="gii2e2y" class="related_img"><a href="http://m.bai1xia.com/news/post/67259.html"><img src="http://m.bai1xia.com/news/zb_users/upload/2022/07/20220723013500_12993.png"></a></div> <div id="4oa00e0" class="related_detail"> <h3><a href="http://m.bai1xia.com/news/post/67259.html" title="怎么調整<a target="_blank" href="http://m.bai1xia.com/news/tags-1739.html"style="font-weight:bold;">圖形</a>李的<a target="_blank" href="http://m.bai1xia.com/news/tags-13298.html"style="font-weight:bold;">圖片大小</a>(怎么修改圖片的形狀和大小?)">怎么調整<a target="_blank" href="http://m.bai1xia.com/news/tags-1739.html"style="font-weight:bold;">圖形</a>李的<a target="_blank" href="http://m.bai1xia.com/news/tags-13298.html"style="font-weight:bold;">圖片大小</a>(怎么修改圖片的形狀和大小?)</a></h3> <div id="okmq0yg" class="meta"> <span><i class="fa fa-eye"></i>722</span> <span><i class="fa fa-clock-o"></i>2022-05-30</span> </div> </div> </article> <article class="fl"> <div id="ycc000w" class="related_img"><a href="http://m.bai1xia.com/news/post/64782.html"><img src="http://m.bai1xia.com/news/zb_users/cache/ly_autoimg/n/NjQ3ODI.jpg"></a></div> <div id="yoyueg0" class="related_detail"> <h3><a href="http://m.bai1xia.com/news/post/64782.html" title="智能圖標文字如何復制過去(文字圖案復制)">智能圖標文字如何復制過去(文字圖案復制)</a></h3> <div id="ise2euy" class="meta"> <span><i class="fa fa-eye"></i>722</span> <span><i class="fa fa-clock-o"></i>2022-05-30</span> </div> </div> </article> <article class="fl"> <div id="02iscuk" class="related_img"><a href="http://m.bai1xia.com/news/post/3183.html"><img src="http://m.bai1xia.com/news/zb_users/cache/ly_autoimg/m/MzE4Mw.jpg"></a></div> <div id="mqaiikq" class="related_detail"> <h3><a href="http://m.bai1xia.com/news/post/3183.html" title="【MySQL<a target="_blank" href="http://m.bai1xia.com/news/tags-233.html"style="font-weight:bold;">實戰</a>45講基礎篇】(task2)日志系統">【MySQL<a target="_blank" href="http://m.bai1xia.com/news/tags-233.html"style="font-weight:bold;">實戰</a>45講基礎篇】(task2)日志系統</a></h3> <div id="oqckei2" class="meta"> <span><i class="fa fa-eye"></i>722</span> <span><i class="fa fa-clock-o"></i>2022-05-30</span> </div> </div> </article> </div> </div> <!--<p class="comment-disable sb br mb"><i class="iconfont icon-cry"></i>抱歉,評論功能暫時關閉!</p>--> </div> </div> <div id="2cokuyq" class="sidebar"> <div class="iqaue0y" id="推薦文章" class="part clear 推薦文章"> <div id="esaucsk" class="top"> <h3 class="title">推薦文章</h3> </div> <div id="ukkk0mo" class="side 推薦文章"><ul><ul class="hot_posts"> <li><h4><a href="http://m.bai1xia.com/news/post/132763.html" title="企業生產管理是什么,企業生產管理軟件">企業生產管理是什么,企業生產管理軟件</a></h4></li><li><h4><a href="http://m.bai1xia.com/news/post/136160.html" title="盤點進銷存軟件排行榜前十名">進盤點進銷存軟件排行榜前十名</a></h4></li><li><h4><a href="http://m.bai1xia.com/news/post/132779.html" title="進銷存系統哪個簡單好用?進銷存系統優點">進銷存系統哪個簡單好用?進銷存系統優點</a></h4></li><li><h4><a href="http://m.bai1xia.com/news/post/133648.html" title="工廠生產管理(工廠生產管理流程及制度)">工廠生產管理(工廠生產管理流程及制度)</a></h4></li><li><h4><a href="http://m.bai1xia.com/news/post/132780.html" title="生產管理軟件,機械制造業生產管理,制造業生產過程管理軟件">生產管理軟件,機械制造業生產管理,制造業生產過程管理軟件</a></h4></li><li><h4><a href="http://m.bai1xia.com/news/post/132776.html" title="進銷存軟件和ERP有什么區別?進銷存與erp軟件理解">進銷存軟件和ERP有什么區別?進銷存與erp軟件理解</a></h4></li><li><h4><a href="http://m.bai1xia.com/news/post/132974.html" title="進銷存如何進行庫存管理">進銷存如何進行庫存管理</a></h4></li><li><h4><a href="http://m.bai1xia.com/news/post/132269.html" title="excel銷售訂單管理系統(銷售訂單錄入系統)">如何利用excel制作銷售訂單管理系統?</a></h4></li><li><h4><a href="http://m.bai1xia.com/news/post/136946.html" title="數據庫訂單管理系統有哪些功能?數據庫訂單管理系統怎么設計?">數據庫訂單管理系統有哪些功能?數據庫訂單管理系統怎么設計?</a></h4></li><li><h4><a href="http://m.bai1xia.com/news/post/132312.html" title="數據庫訂單管理系統(訂單系統數據流圖)">什么是數據庫管理系統?</a></h4></li></ul></ul></div> </div> <div class="auqmwae" id="divPrevious" class="part clear previous"> <div id="cea000m" class="top"> <h3 class="title">最近發表</h3> </div> <div id="yeawimq" class="side divPrevious"><ul><li><a title="寵物集市-寵物集市華東、華南、華北排行榜一覽表" href="http://m.bai1xia.com/news/post/157796.html">寵物集市-寵物集市華東、華南、華北排行榜一覽表</a></li> <li><a title="京寵展-2025年時間表" href="http://m.bai1xia.com/news/post/157795.html">京寵展-2025年時間表</a></li> <li><a title="寵物集市在深圳哪里有?時間地址最新消息" href="http://m.bai1xia.com/news/post/157794.html">寵物集市在深圳哪里有?時間地址最新消息</a></li> <li><a title="亞洲寵物展2025年展會介紹" href="http://m.bai1xia.com/news/post/157793.html">亞洲寵物展2025年展會介紹</a></li> <li><a title="京寵展信息指南" href="http://m.bai1xia.com/news/post/157792.html">京寵展信息指南</a></li> <li><a title="寵物展會2025年時間表" href="http://m.bai1xia.com/news/post/157791.html">寵物展會2025年時間表</a></li> <li><a title="亞寵展、全球寵物產業風向標——亞洲寵物展覽會深度解析" href="http://m.bai1xia.com/news/post/157790.html">亞寵展、全球寵物產業風向標——亞洲寵物展覽會深度解析</a></li> <li><a title="2025年亞洲寵物展覽會、京寵展有哪些亮點" href="http://m.bai1xia.com/news/post/157789.html">2025年亞洲寵物展覽會、京寵展有哪些亮點</a></li> <li><a title="<a target="_blank" href="http://m.bai1xia.com/news/tags-10262.html"style="font-weight:bold;">wps</a>演示添加自定義按鈕<a target="_blank" href="http://m.bai1xia.com/news/tags-823.html"style="font-weight:bold;">設置</a>動作改變按順序播放" href="http://m.bai1xia.com/news/post/118206.html"><a target="_blank" href="http://m.bai1xia.com/news/tags-10262.html"style="font-weight:bold;">wps</a>演示添加自定義按鈕<a target="_blank" href="http://m.bai1xia.com/news/tags-823.html"style="font-weight:bold;">設置</a>動作改變按順序播放</a></li> <li><a title="如何將<a target="_blank" href="http://m.bai1xia.com/news/tags-13007.html"style="font-weight:bold;">WPS</a>行中的文本調整到行中" href="http://m.bai1xia.com/news/post/119027.html">如何將<a target="_blank" href="http://m.bai1xia.com/news/tags-13007.html"style="font-weight:bold;">WPS</a>行中的文本調整到行中</a></li> </ul></div> </div> <div class="gkgcogw" id="sidebar_ad" class="part clear sidebar_ad"> <div id="cqakime" class="part sidebar_ad"></div> </div> <div class="skgqyos" id="hot_posts" class="part clear hot_posts"> <div id="woksa0q" class="top"> <h3 class="title">熱評文章</h3> </div> <ul class="hot_posts"><li><h4><a href="http://m.bai1xia.com/news/post/104011.html" title="<a target="_blank" href="http://m.bai1xia.com/news/tags-10179.html"style="font-weight:bold;">零代碼</a>開發是什么?2022<a target="_blank" href="http://m.bai1xia.com/news/tags-1.html"style="font-weight:bold;">低代碼</a>平臺排行榜">零代碼開發是什么?2022低代碼平臺排行榜</a></h4></li><li><h4><a href="http://m.bai1xia.com/news/post/131019.html" title="智能<a target="_blank" href="http://m.bai1xia.com/news/tags-14329.html"style="font-weight:bold;">進銷存庫存管理</a><a target="_blank" href="http://m.bai1xia.com/news/tags-56.html"style="font-weight:bold;">系統</a>(智慧進銷存)">智能進銷存庫存管理系統(智慧進銷存)</a></h4></li><li><h4><a href="http://m.bai1xia.com/news/post/73907.html" title="<a target="_blank" href="http://m.bai1xia.com/news/tags-14095.html"style="font-weight:bold;">在線文檔</a>哪家強?8款在線文檔編輯軟件推薦">在線文檔哪家強?8款在線文檔編輯軟件推薦</a></h4></li><li><h4><a href="http://m.bai1xia.com/news/post/102663.html" title="WPS2016怎么繪制簡單的價格表?">WPS2016怎么繪制簡單的價格表?</a></h4></li><li><h4><a href="http://m.bai1xia.com/news/post/143685.html" title="定制家居數字化管理模式:提升品質、智能化和個性化的未來">定制家居數字化管理模式:提升品質、智能化和個性化的未</a></h4></li><li><h4><a href="http://m.bai1xia.com/news/post/144333.html" title="智能定制家居管理系統:重新定義家庭生活方式">智能定制家居管理系統:重新定義家庭生活方式</a></h4></li></ul> </div> <div class="0yu0c02" id="divLinkage" class="part clear link"> <div id="uygqask" class="top"> <h3 class="title">友情鏈接</h3> </div> <div id="uk0uquw" class="side divLinkage"><ul><li id="2sqakos" class="link-item"><a href="http://m.bai1xia.com/" target="_blank" title="伙伴云">伙伴云</a></li><li id="20cwe00" class="link-item"><a href="http://m.bai1xia.com/news/category-19.html" title="進銷存管理">進銷存管理</a></li><li id="um20quk" class="link-item"><a href="http://m.bai1xia.com/news/category-3.html" title="低代碼">低代碼</a></li><li id="ukso2ei" class="link-item"><a href="http://m.bai1xia.com/news/tags-12.html" target="_blank" title="Excel表格">Excel表格</a></li><li id="c2qomc0" class="link-item"><a title="誠鼎網">誠鼎網</a></li><li id="eisqo2a" class="link-item"><a title="FinClip">FinClip</a></li><li id="ms0euk0" class="link-item"><a title="海特貝利常識網">海特貝利常識網</a></li></ul></div> </div> </div> </div> </section> </div> <footer class="p-footer"> <div id="w0000ac" class="contant_box"> <div id="yeauqi0" class="discover_tmt"> <h5 class="" style="font-size: 1px; color: white;">伙伴云</h5> <div id="mea02mq" class="text_box"> <a title="toB數字化營銷SEO" style="font-size: 1px; color: white;">加搜toBSEO</a> <a title="小程序工具" style="font-size: 1px; color: white;">前端框架</a> <a title="小紅書營銷攻略" style="font-size: 1px; color: white;">小紅書營銷攻略</a> <a title="衍因科技" style="font-size: 1px; color: white;">衍因科技</a> <a title="FinClip 技術文檔" style="font-size: 1px; color: white;">小程序容器幫助中心</a> <a title="小程序開發行業洞察" style="font-size: 1px; color: white;">小程序開發行業洞察</a> <a title="全面預算管理資訊" style="font-size: 1px; color: white;">全面預算管理資訊</a> <a title="企微SCRM客戶管理干貨" style="font-size: 1px; color: white;">企微SCRM客戶管理干貨</a> <a title="3D視覺相機資訊" style="font-size: 1px; color: white;">3D視覺相機資訊</a> <a title="創冷科技無電制冷" style="font-size: 1px; color: #22292D;">創冷科技無電制冷</a> <a title="協作機器人資訊" style="font-size: 1px; color: #22292D;">協作機器人資訊</a> </div> </div> <div id="qsokk2w" class="collaboration_box"> </div> <div id="2i0gqii" class="we_img_box clear"> <div id="i22scsk" class="img_box"> <img src="http://m.bai1xia.com/news/zb_users/theme/zblog5_news/image/ewm.png" alt="" class="hover_tmt"> </div> </div> </div> <p class="info"> <a target="_blank" rel="nofollow">京ICP備12038259號</a> <span> <a href="#"></a></span> </p> </footer> <div class="m0uqw0i" id="backtop" class="backtop"> <div id="ycoay0u" class="bt-box top"> <i class="fa fa-angle-up fa-2x"></i> </div> </div> <script charset="UTF-8" src="http://m.bai1xia.com/assets/js/sensorsdata.1.22.2.min.js"></script> <script charset="UTF-8"> var sensors = window['sensorsDataAnalytic201505']; sensors.init({ server_url: 'https://saapi.huoban.com/sa?project=production', heatmap:{scroll_notice_map:'not_collect'}, use_client_time:true, send_type:'beacon' }); sensors.quick('autoTrack'); </script> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?6444c045836d6bf27124085a4f62c2a8"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <script> (()=>{const e="https://analyze.jiasou.cc/api/v1/page_view/report/",n="9fe06d4884e0461caaa1de5651164d43";let t=null;const o=new Proxy({},{get:(e,n)=>localStorage.getItem(window.btoa(n)),set:(e,n,t)=>!!t&&(localStorage.setItem(window.btoa(n),t),!0)});new Promise((t=>{if(o.fingerprint)t();else{const a=function(){var e={};if(e.userAgent=navigator.userAgent||"",e.plugins=[],navigator.plugins&&navigator.plugins.length>0)for(var n=0;n<navigator.plugins.length;n++){var t={name:navigator.plugins[n].name||"",filename:navigator.plugins[n].filename||"",description:navigator.plugins[n].description||""};e.plugins.push(t)}e.languages=navigator.languages||[navigator.language||""],e.timezone=(new Date).getTimezoneOffset(),e.screenResolution={width:window.screen.width||0,height:window.screen.height||0,pixelDepth:window.screen.pixelDepth||0,colorDepth:window.screen.colorDepth||0};var o=document.createElement("canvas").getContext("2d"),a=[],i=["monospace","sans-serif","serif"];for(n=0;n<i.length;n++){var r=i[n];o.font="12px "+r,o.measureText("abcdefghijklmnopqrstuvwxyz0123456789").width>0&&a.push(r)}return e.fonts=a,e.cookieEnabled=navigator.cookieEnabled||!1,e.localStorage=void 0!==window.localStorage,e.sessionStorage=void 0!==window.sessionStorage,e.doNotTrack="1"===navigator.doNotTrack||"1"===window.doNotTrack||"1"===navigator.msDoNotTrack||"yes"===navigator.doNotTrack,e}();fetch(`${e}u/`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:n,f:window.btoa(JSON.stringify(a))})}).then((e=>{console.debug("browser fingerprint sent"),200===e.status&&e.json().then((e=>{console.debug("browser fingerprint received",e),o.fingerprint=e.fp,t()}))}))}})).then((()=>{e&&o.fingerprint&&fetch(e+`?${new URLSearchParams({token:n}).toString()}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({c:window.btoa(JSON.stringify({u:o.fingerprint,l:window.location.href,r:document.referrer}))})}).then((e=>{200==e.status&&e.json().then((e=>{e.track_id&&(t=e.track_id)}))}))})),window.addEventListener("beforeunload",(async n=>{t&&fetch(e+`?${new URLSearchParams({track_id:t}).toString()}`,{method:"GET",headers:{"Content-Type":"text/plain"},keepalive:!0}),n.returnValue=""}))})(); </script><script language="javascript" src="http://m.bai1xia.com/news/zb_users/plugin/ZF_ad/js/index.js?id=758"></script> <script language="javascript" src="http://m.bai1xia.com/news/zb_users/plugin/ZF_ad/js/ZF_ad__cookie.js"></script> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://m.bai1xia.com/" title="日本亚洲中午字幕乱码">日本亚洲中午字幕乱码</a> <div class="friend-links"> </div> </div> </footer> <a href="http://" target="_blank">亚洲最大成人网色</a>| <a href="http://" target="_blank">亚洲第一AV网站</a>| <a href="http://" target="_blank">亚洲欧洲尹人香蕉综合</a>| <a href="http://" target="_blank">亚洲av日韩av无码黑人</a>| <a href="http://" target="_blank">国产亚洲色视频在线</a>| <a href="http://" target="_blank">国产gv天堂亚洲国产gv刚刚碰</a>| <a href="http://" target="_blank">亚洲免费视频一区二区三区</a>| <a href="http://" target="_blank">亚洲精品成人网久久久久久</a>| <a href="http://" target="_blank">亚洲 综合 国产 欧洲 丝袜</a>| <a href="http://" target="_blank">va亚洲va日韩不卡在线观看</a>| <a href="http://" target="_blank">亚洲狠狠爱综合影院婷婷</a>| <a href="http://" target="_blank">亚洲精品NV久久久久久久久久</a>| <a href="http://" target="_blank">精品久久久久久亚洲中文字幕 </a>| <a href="http://" target="_blank">国产成人亚洲综合在线</a>| <a href="http://" target="_blank">亚洲6080yy久久无码产自国产</a>| <a href="http://" target="_blank">亚洲a∨无码精品色午夜</a>| <a href="http://" target="_blank">欧美日韩亚洲精品</a>| <a href="http://" target="_blank">国产精品亚洲专一区二区三区</a>| <a href="http://" target="_blank">亚洲AV无码之日韩精品</a>| <a href="http://" target="_blank">亚洲一区二区三区在线播放</a>| <a href="http://" target="_blank">中文字幕亚洲无线码</a>| <a href="http://" target="_blank">国产亚洲精久久久久久无码</a>| <a href="http://" target="_blank">久久精品亚洲视频</a>| <a href="http://" target="_blank">亚洲男女一区二区三区</a>| <a href="http://" target="_blank">亚洲国产av高清无码</a>| <a href="http://" target="_blank">亚洲夂夂婷婷色拍WW47 </a>| <a href="http://" target="_blank">亚洲AV人人澡人人爽人人夜夜</a>| <a href="http://" target="_blank">亚洲精品福利视频</a>| <a href="http://" target="_blank">亚洲欧洲日韩综合</a>| <a href="http://" target="_blank">亚洲中文字幕无码中文</a>| <a href="http://" target="_blank">亚洲av综合日韩</a>| <a href="http://" target="_blank">jlzzjlzz亚洲乱熟在线播放</a>| <a href="http://" target="_blank">国产成人亚洲综合色影视</a>| <a href="http://" target="_blank">日韩亚洲Av人人夜夜澡人人爽</a>| <a href="http://" target="_blank">亚洲成人福利在线</a>| <a href="http://" target="_blank">亚洲AV电影天堂男人的天堂</a>| <a href="http://" target="_blank">国产成人亚洲综合</a>| <a href="http://" target="_blank">亚洲五月激情综合图片区</a>| <a href="http://" target="_blank">亚洲国产午夜精品理论片</a>| <a href="http://" target="_blank">亚洲av成人无码网站…</a>| <a href="http://" target="_blank">国产精品亚洲综合一区</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body><div id="oogae" class="pl_css_ganrao" style="display: none;"><tr id="oogae"><s id="oogae"><small id="oogae"></small></s></tr><acronym id="oogae"><xmp id="oogae"><strike id="oogae"></strike></xmp></acronym><source id="oogae"></source><td id="oogae"></td><menu id="oogae"></menu><wbr id="oogae"><fieldset id="oogae"><table id="oogae"></table></fieldset></wbr><tbody id="oogae"><wbr id="oogae"><bdo id="oogae"></bdo></wbr></tbody><li id="oogae"><button id="oogae"><delect id="oogae"></delect></button></li><tbody id="oogae"></tbody><noframes id="oogae"></noframes><del id="oogae"></del><bdo id="oogae"></bdo><td id="oogae"></td><cite id="oogae"></cite><td id="oogae"></td><ul id="oogae"><strike id="oogae"><source id="oogae"></source></strike></ul><strike id="oogae"><rt id="oogae"><code id="oogae"></code></rt></strike><td id="oogae"></td><sup id="oogae"><center id="oogae"><dl id="oogae"></dl></center></sup><pre id="oogae"><xmp id="oogae"><fieldset id="oogae"></fieldset></xmp></pre><em id="oogae"><ul id="oogae"><dfn id="oogae"></dfn></ul></em><abbr id="oogae"></abbr><optgroup id="oogae"><abbr id="oogae"><center id="oogae"></center></abbr></optgroup><object id="oogae"></object><blockquote id="oogae"><tfoot id="oogae"><source id="oogae"></source></tfoot></blockquote><strike id="oogae"><input id="oogae"><tbody id="oogae"></tbody></input></strike><rt id="oogae"><tr id="oogae"><pre id="oogae"></pre></tr></rt><td id="oogae"></td><noscript id="oogae"></noscript><cite id="oogae"></cite><center id="oogae"><dd id="oogae"><th id="oogae"></th></dd></center><code id="oogae"><noframes id="oogae"><ul id="oogae"></ul></noframes></code><sup id="oogae"><center id="oogae"><dl id="oogae"></dl></center></sup><source id="oogae"></source><object id="oogae"></object><cite id="oogae"></cite><del id="oogae"></del><option id="oogae"><samp id="oogae"><tbody id="oogae"></tbody></samp></option><blockquote id="oogae"></blockquote><optgroup id="oogae"></optgroup><cite id="oogae"></cite><optgroup id="oogae"><ul id="oogae"><sup id="oogae"></sup></ul></optgroup><th id="oogae"></th><li id="oogae"></li><tfoot id="oogae"></tfoot><del id="oogae"></del><em id="oogae"><del id="oogae"><sup id="oogae"></sup></del></em><center id="oogae"></center><del id="oogae"></del><small id="oogae"><button id="oogae"><pre id="oogae"></pre></button></small><del id="oogae"></del><center id="oogae"></center><td id="oogae"></td><td id="oogae"></td><li id="oogae"></li><sup id="oogae"></sup><ul id="oogae"></ul><th id="oogae"></th><menu id="oogae"><noscript id="oogae"><acronym id="oogae"></acronym></noscript></menu><th id="oogae"><object id="oogae"><small id="oogae"></small></object></th><blockquote id="oogae"><tfoot id="oogae"><rt id="oogae"></rt></tfoot></blockquote><menu id="oogae"></menu><abbr id="oogae"></abbr><bdo id="oogae"></bdo><strike id="oogae"><rt id="oogae"><tbody id="oogae"></tbody></rt></strike><object id="oogae"><abbr id="oogae"><button id="oogae"></button></abbr></object><ul id="oogae"><center id="oogae"><center id="oogae"></center></center></ul><sup id="oogae"><source id="oogae"><strong id="oogae"></strong></source></sup><sup id="oogae"><center id="oogae"><dl id="oogae"></dl></center></sup><center id="oogae"></center><strong id="oogae"></strong><delect id="oogae"></delect><bdo id="oogae"><abbr id="oogae"><kbd id="oogae"></kbd></abbr></bdo><samp id="oogae"></samp><tr id="oogae"><wbr id="oogae"><cite id="oogae"></cite></wbr></tr><xmp id="oogae"></xmp><table id="oogae"></table><strong id="oogae"></strong><strike id="oogae"><input id="oogae"><tbody id="oogae"></tbody></input></strike><strong id="oogae"></strong><delect id="oogae"></delect><dfn id="oogae"><source id="oogae"><strong id="oogae"></strong></source></dfn><button id="oogae"><samp id="oogae"><tbody id="oogae"></tbody></samp></button><li id="oogae"></li><center id="oogae"></center><blockquote id="oogae"></blockquote><sup id="oogae"></sup><blockquote id="oogae"><fieldset id="oogae"><menu id="oogae"></menu></fieldset></blockquote><li id="oogae"></li><pre id="oogae"></pre><tbody id="oogae"></tbody><cite id="oogae"></cite><object id="oogae"></object><option id="oogae"><delect id="oogae"><tr id="oogae"></tr></delect></option><strike id="oogae"><input id="oogae"><tbody id="oogae"></tbody></input></strike><rt id="oogae"><code id="oogae"><noframes id="oogae"></noframes></code></rt><pre id="oogae"></pre><input id="oogae"><tbody id="oogae"><tfoot id="oogae"></tfoot></tbody></input><delect id="oogae"></delect><tbody id="oogae"></tbody><acronym id="oogae"></acronym><center id="oogae"></center><bdo id="oogae"><option id="oogae"><delect id="oogae"></delect></option></bdo><nav id="oogae"></nav><kbd id="oogae"><pre id="oogae"><td id="oogae"></td></pre></kbd><tr id="oogae"><pre id="oogae"><xmp id="oogae"></xmp></pre></tr><dd id="oogae"><th id="oogae"><object id="oogae"></object></th></dd><object id="oogae"></object><samp id="oogae"><dl id="oogae"><nav id="oogae"></nav></dl></samp><small id="oogae"></small><noframes id="oogae"></noframes><tr id="oogae"><wbr id="oogae"><cite id="oogae"></cite></wbr></tr><option id="oogae"><samp id="oogae"><tr id="oogae"></tr></samp></option><samp id="oogae"></samp><abbr id="oogae"></abbr><abbr id="oogae"></abbr><pre id="oogae"><td id="oogae"><fieldset id="oogae"></fieldset></td></pre><blockquote id="oogae"><dfn id="oogae"><rt id="oogae"></rt></dfn></blockquote><tfoot id="oogae"></tfoot><pre id="oogae"></pre><sup id="oogae"><input id="oogae"><code id="oogae"></code></input></sup><dl id="oogae"><nav id="oogae"><li id="oogae"></li></nav></dl><tfoot id="oogae"></tfoot><th id="oogae"></th><th id="oogae"></th><noframes id="oogae"></noframes><abbr id="oogae"></abbr><source id="oogae"><strong id="oogae"><optgroup id="oogae"></optgroup></strong></source><bdo id="oogae"></bdo><delect id="oogae"></delect><del id="oogae"></del><del id="oogae"></del><menu id="oogae"><tr id="oogae"><pre id="oogae"></pre></tr></menu><center id="oogae"></center><acronym id="oogae"></acronym><acronym id="oogae"></acronym><tbody id="oogae"></tbody><kbd id="oogae"></kbd><abbr id="oogae"></abbr><bdo id="oogae"></bdo><strike id="oogae"><rt id="oogae"><tbody id="oogae"></tbody></rt></strike><center id="oogae"><dd id="oogae"><th id="oogae"></th></dd></center><abbr id="oogae"></abbr><button id="oogae"><samp id="oogae"><tbody id="oogae"></tbody></samp></button><bdo id="oogae"><table id="oogae"><kbd id="oogae"></kbd></table></bdo><abbr id="oogae"><center id="oogae"><dd id="oogae"></dd></center></abbr><abbr id="oogae"><center id="oogae"><dd id="oogae"></dd></center></abbr><del id="oogae"></del><abbr id="oogae"></abbr><del id="oogae"></del></div> </html> <!--47.96 ms , 17 queries , 3719kb memory , 0 error-->