国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript 編程精解 中文第三版 十三、瀏覽器中的 JavaScript

zhiwei / 454人閱讀

摘要:在本例中,使用屬性指定鏈接的目標,其中表示超文本鏈接。您應該認為和元數據隱式出現在示例中,即使它們沒有實際顯示在文本中。

來源:ApacheCN『JavaScript 編程精解 中文第三版』翻譯項目

原文:JavaScript and the Browser

譯者:飛龍

協議:CC BY-NC-SA 4.0

自豪地采用谷歌翻譯

部分參考了《JavaScript 編程精解(第 2 版)》

Web 背后的夢想是公共信息空間,其中我們通過共享信息進行交流。 其普遍性至關重要:超文本鏈接可指向任何東西,無論是個人的,本地的還是全球的,無論是草稿還是高度潤色的。

Douglas Crockford,《JavaScript 編程語言》(視頻講座)

本書接下來的章節將會介紹 Web 瀏覽器。可以說,沒有瀏覽器,就沒有 JavaScript。就算有,估計也不會有多少人去關心這門編程語言。

Web 技術自出現伊始,其演變方式和技術上就是以分散的方式發展的。許多瀏覽器廠商專門為其開發新的功能,有時這些新功能被大眾采納,有時這些功能被其他功能所代替,最終形成了一套標準。

這種發展模式是把雙刃劍。一方面,不會有一個集中式的組織來管理技術的演進,取而代之的是一個包含多方利益集團的松散協作架構(偶爾會出現對立)。另一方面,互聯網這種無計劃的發展方式所開發出來的系統,其內部很難實現一致性。事實上,它的一些部分令人疑惑,并且毫無設計。

網絡和 Internet

計算機網絡出現在 20 世紀 50 年代。如果在兩臺或多臺計算機之間鋪設電纜,那么你可以通過這些電纜互相收發數據,并實現一些神奇的功能。

如果通過連接同一個建筑中的兩臺機器就可以實現一些神奇的功能,那么如果可以連接全世界的機器,就可以完成更偉大的工作了。20 世紀 80 年代,人們開發了相關技術來實現這個愿景,我們將其產生的網絡稱為 Internet。而 Internet 的表現名副其實。

計算機可以使用這種網絡向其他計算機發送位數據。為了在傳輸位數據的基礎上,實現計算機之間的有效通信,網絡兩端的機器必須知道這些位所表達的實際含義。對于給定的位序列,其含義完全取決于位序列描述的信息類型與使用的編碼機制。

網絡協議描述了一種網絡通信方式。網絡協議非常多,其中包括郵件發送、郵件收取和郵件共享,甚至連病毒軟件感染控制計算機都有相應的協議。

例如,HTTP(超文本傳輸協議,Hypertext Transfer Protocol)是用于檢索命名資源(信息塊,如網頁或圖片)的協議。 它指定發出請求的一方應該以這樣的一行開始,命名資源和它正在嘗試使用的協議的版本。

GET /index.html HTTP/1.1

有很多規則,關于請求者在請求中包含更多信息的方式,以及另一方返回資源并打包其內容的方式。 我們將在第 18 章中更詳細地觀察 HTTP。

大多數協議都建立在其他協議之上。 HTTP 將網絡視為一種流式設備,您可以將位放入這些設備,并使其按正確的順序到達正確的目的地。 我們在第 11 章]中看到,確保這些事情已經是一個相當困難的問題。

TCP(傳輸控制協議,Transmission Control Protocol)就可以幫助我們解決該問題。所有連接到互聯網的設備都會使用到這種協議,而多數互聯網通信都構建在這種協議之上。

TCP 連接的工作方式是一臺電腦必須等待或者監聽,而另一臺電腦則開始與之通信。一臺機器為了同時監聽不同類型的通信信息,會為每個監聽器分配一個與之關聯的數字(我們稱之為端口)。大多數協議都指定了默認使用的端口。例如,當我們向使用 SMTP 協議發送一封郵件時,我們需要通過一臺機器來發送郵件,而發送郵件的機器需要監聽端口 25。

隨后另一臺機器連接到使用了正確端口號的目標機器上。如果可以連接到目標機器,而且目標機器在監聽對應端口,則說明連接創建成功。負責監聽的計算機名為服務器,而連接服務器的計算機名為客戶端。

我們可以將該連接看成雙向管道,位可以在其中流動,也就是說兩端的機器都可以向連接中寫入數據。當成功傳輸完這些位數據后,雙方都可以讀取另一端傳來的數據。TCP 是一個非常便利的模型。我們可以說TCP就是一種網絡的抽象。

Web

萬維網(World Wide Web,不要將其與 Internet 混淆)是包含一系列協議和格式的集合,允許我們通過瀏覽器訪問網頁。詞組中的 Web 指的是這些頁面可以輕松地鏈接其他網頁,因此最后可以連接成一張巨大的網,用戶可以在網絡中瀏覽。

你只需將一臺計算機連接到 Internet 并使用 HTTP 監聽 80 端口,就可以成為 Web 的一部分。其他計算機可以通過網絡,并使用 HTTP 協議獲取其他計算機上的文件。

網絡中的每個文件都能通過 URL(統一資源定位符,Universal Resource Locator)訪問,如下所示:

  http://eloquentjavascript.net/13_browser.html
 |      |                      |               |
 protocol       server               path

該地址的第一部分告訴我們 URL 使用的是 HTTP 協議(加密的 HTTP 連接則使用https://來表示)。第二部分指的是獲取文件的服務器地址。第三部分是我們想要獲取的具體文件(或資源)的路徑。

連接到互聯網的機器獲得一個 IP 地址,該地址是一個數字,可用于將消息發送到該機器的,類似于"149.210.142.219""2001:4860:4860::8888"。 但是或多或少的隨機數字列表很難記住,而且輸入起來很笨拙,所以你可以為一個特定的地址或一組地址注冊一個域名。 我注冊了eloquentjavascript.net,來指向我控制的機器的 IP 地址,因此可以使用該域名來提供網頁。

如果你在瀏覽器地址欄中輸入上面提到的 URL,瀏覽器會嘗試獲取并顯示該 URL 對應的文檔。首先,你的瀏覽器需要找出域名eloquentjavascript.net指向的地址。然后使用 HTTP 協議,連接到該地址處的服務器,并請求/13_browser.html這個資源。如果一切順利,服務器會發回一個文檔,然后您的瀏覽器將顯示在屏幕上。

HTML

HTML,即超文本標記語言(Hypertext Markup Language),是在網頁中得到廣泛使用的文檔格式。HTML 文檔不僅包含文本,還包含了標簽,用于說明文本結構,描述了諸如鏈接、段落、標題之類的元素。

一個簡短的 HTML 文檔如下所示:



  
    
    My home page
  
  
    

My home page

Hello, I am Marijn and this is my home page.

I also wrote a book! Read it here.

標簽包裹在尖括號之間(<>,小于和大于號),提供關于文檔結構的信息。其他文本則是純文本。

文檔以開頭,告訴瀏覽器將頁面解釋為現代 HTML,以別于過去使用的各種方言。

HTML 文檔有頭部(head)和主體(body)。頭部包含了文檔信息,而主體則包含文檔自身。在本例中,頭部將文檔標題聲明為"My home page",并使用 UTF-8 編碼,它是將 Unicode 文本編碼為二進制的方式。文檔的主體包含標題(

,表示一級標題,

可以產生不同等級的子標題)和兩個段落(

)。

標簽有幾種形式。一個元素,比如主體、段落或鏈接以一個起始標簽(比如

)開始,并以一個閉合標簽(比如

)結束。一些起始標簽,比如一個鏈接(),會包含一些額外信息,其形式是name="value"這種鍵值對,我們稱之為屬性。在本例中,使用屬性href="http://eloquentjavascript.net"指定鏈接的目標,其中href表示“超文本鏈接(Hypertext Reference)”。

某些類型的標簽不會包含任何元素,這種標簽不需要閉合。元數據標簽就是一個例子。

譯者注:最好還是這樣閉合它們:

盡管 HTML 中尖括號有特殊含義,但為了在文檔的文本中包含這些符號,可以引入另外一種形式的特殊標記方法。普通文本中的起始尖括號寫成<(less than),而閉合尖括號寫成>(greater than)。在 HTML 中,我們將一個&字符后跟著一個單詞和分號(;)這種寫法稱為一個實體,瀏覽器會使用實體編碼對應的字符替換它們。

與之類似的是 JavaScript 字符串中反斜杠的使用。由于 HTML 中的實體機制賦予了&特殊含義,因此我們需要使用&來表示一個&字符。在屬性的值(包在雙引號中)中使用"可以插入實際的引號字符。

HTML 的解析過程容錯性非常強。當應有的標簽丟失時,瀏覽器會重新構建這些標簽。標簽的重新構建已經標準化,你可以認為所有現代瀏覽器的行為都是一致的。

下面的文件與之前版本顯示效果相同:




My home page

My home page

Hello, I am Marijn and this is my home page.

I also wrote a book! Read it here.

標簽可以完全丟棄。瀏覽器知道</b>屬于頭部,而<b><h1></b>屬于主體。此外,我再也不用明確關閉某個段落,因為新段落開始或文檔結束時,瀏覽器會隱式關閉段落標簽。目標鏈接兩邊的引號也可以丟棄。</p> <p>本書的示例通常都會省略<b><html></b>、<b><head></b>和<b><body></b>標簽,以保持源代碼簡短,避免太過雜亂。但我會明確關閉所有標簽并在屬性兩旁包含引號。</p> <p>本書也會經常忽略<b>doctype</b>和<b>charset</b>聲明。這并不是鼓勵大家省略它們。當你忘記它們時,瀏覽器往往會做出荒謬的事情。 您應該認為<b>doctype</b>和<b>charset</b>元數據隱式出現在示例中,即使它們沒有實際顯示在文本中。</p> <b>HTML 和 JavaScript</b> <p>對于本書來說,最重要的一個 HTML 標簽是<b><script></b>。該標簽允許我們在文檔中包含一段 JavaScript 代碼。</p> <pre><h1>Testing alert</h1> <script>alert("hello!");</script></pre> <p>當瀏覽器在讀取 HTML 時,一旦遇到<b><script></b>標簽就會執行該代碼。這個頁面在打開時會彈出一個對話框 - <b>alert</b>函數類似<b>prompt</b>,因為它彈出一個小窗口,但只顯示一條消息而不請求輸入。</p> <p>在 HTML 文檔中包含大程序是不切實際的。<b><script></b>標簽可以指定一個<b>src</b>屬性,從一個 URL 獲取腳本文件(包含 JavaScript 程序的文本文件)。</p> <pre><h1>Testing alert</h1> <script src="code/hello.js"></script></pre> <p>這里包含的文件<b>code/hello.js</b>是和上文中相同的一段程序,<b>alert("hello")</b>。當一個頁面將其他 URL 引用為自身的一部分時(比如圖像文件或腳本),網頁瀏覽器將會立即獲取這些資源并將其包含在頁面中。</p> <p>即使<b>script</b>標簽引用了一個文本文件,且并未包含任何代碼,你也必須使用<b></script></b>來閉合標簽。如果你忘記了這點,瀏覽器會將剩余的頁面會作為腳本的一部分進行解析。</p> <p>你可以在瀏覽器中加載ES模塊(參見第 10 章),向腳本標簽提供<b>type ="module"</b>屬性。 這些模塊可以依賴于其他模塊,通過將相對于自己的 URL 用作<b>import</b>聲明中的模塊名稱。</p> <p>某些屬性也可以包含 JavaScript 程序。下面展示的<b><button></b>標簽(顯示一個按鈕)有一個<b>onclick</b>屬性。該屬性的值將在點擊按鈕時運行。</p> <pre><button onclick="alert("Boom!");">DO NOT PRESS</button></pre> <p>需要注意的是,我們在<b>onclick</b>屬性的字符串中使用了單引號,這是因為我們在使用了雙引號來引用整個屬性。我們也可以使用<b>"</b>。</p> <b>沙箱</b> <p>直接執行從因特網中下載的程序存在潛在危險。你不了解大多數的網頁開發者,他們不一定都心懷善意。一旦運行某些不懷好意的人提供的程序,你的電腦可能會感染病毒,這些程序還會竊取數據會并盜走賬號。</p> <p>但網絡的吸引力就在于你可以瀏覽網站,而不必要信任所有網站。這就是為什么瀏覽器嚴重限制了 JavaScript 程序的能力—— JavaScript 無法查看電腦中的任何文件,也無法修改與其所在頁面無關的數據。</p> <p>我們將這種隔離程序運行環境的技術稱為沙箱。以該思想編寫的程序在沙箱中運行,不會對計算機造成任何傷害。但是你應該想象,這種特殊的沙箱上面有一個厚鋼筋籠子,所以在其中運行的程序實際上不會出去。</p> <p>實現沙箱的難點是:一方面我們要給予程序一定的自由使得程序能有實際用處,但又要限制程序,防止其執行危險的行為。許多實用功能(比如與服務器通信或從剪貼板讀取內容)也會存在問題,有些侵入者可以利用這些功能來侵入你的計算機。</p> <p>時不時會有一些人想到新方法,突破瀏覽器的限制,并對你的機器造成傷害,從竊取少量的私人信息到掌握執行瀏覽器的整個機器。瀏覽器開發者的對策是修補漏洞,然后一切都恢復正常。直到下一次問題被發現并廣為傳播之前,某些政府或秘密組織可以私下利用這些漏洞。</p> <b>兼容性與瀏覽器之爭</b> <p>在 Web 技術發展的早期,一款名為 Mosaic 的瀏覽器統治了整個市場。幾年之后,這種平衡被 Netscape 公司打破,隨后又被微軟的 Internet Explorer 排擠出市場。無論什么時候,當一款瀏覽器統治了整個市場,瀏覽器供應商就會覺得他們有權利單方面為網絡研發新的特性。由于大多數人都使用相同的瀏覽器,因此網站會開始使用這些獨有特性,也就不再考慮其他瀏覽器的兼容性問題了。</p> <p>這是兼容性的黑暗時代,我們通常稱之為瀏覽器之爭。網絡開發者總是為缺乏統一的 Web 標準,而需要去考慮兩到三種互不兼容的平臺而感到煩惱。讓事情變得更糟糕的是 2003 年左右使用的瀏覽器充滿了漏洞,當然不同瀏覽器的漏洞都不一樣。網頁編寫者的生活頗為艱辛。</p> <p>Mozilla Firefox,作為 Netscape 瀏覽器的非盈利性分支,在20世紀初末期開始挑戰 Internet Explorer 的霸主地位。因為當時微軟并未特別關心與其競爭,導致 Firefox 迅速占領了很大的市場份額。與此同時,Google 發布了它的 Chrome 瀏覽器,而 Apple 的 Safari 也得到普及,導致現在成為四個主要選手的競爭,而非一家獨大。</p> <p>新的參與者對標準有著更認真的態度,和更好的工程實踐,為我們減少了不兼容性和錯誤。 微軟看到其市場份額極速下降,在其 Edge 瀏覽器中采取了這些態度,取代了 Internet Explorer。 如果您今天開始學習網絡開發,請認為自己是幸運的。 主流瀏覽器的最新版本行為非常一致,并且錯誤相對較少。</p> <p>這并不是說就沒有問題了。某些使用網絡的人,出于惰性或公司政策,被迫使用舊版本的瀏覽器。直到這些瀏覽器完全退出市場之前,為舊版本瀏覽器編寫網站仍需要掌握很多不常見的特性,了解舊瀏覽器的缺陷和特殊之處。本書不會討論這些特殊的特性,而著眼于介紹現代且健全的網絡程序設計風格。</p> </div> <div id="igy22im" class="mt-64 tags-seach" > <div id="oa2ewwy" class="tags-info"> <a style="width:120px;" title="GPU云服務器" href="http://m.specialneedsforspecialkids.com/site/product/gpu.html">GPU云服務器</a> <a style="width:120px;" title="云服務器" href="http://m.specialneedsforspecialkids.com/site/active/kuaijiesale.html?ytag=seo">云服務器</a> <a style="width:120px;" title="javascript第三版" href="http://m.specialneedsforspecialkids.com/yun/tag/javascriptdisanban/">javascript第三版</a> <a style="width:120px;" title="javascript編程精解" href="http://m.specialneedsforspecialkids.com/yun/tag/javascriptbianchengjingjie/">javascript編程精解</a> <a style="width:120px;" title="javascript高級程序設計第三版" href="http://m.specialneedsforspecialkids.com/yun/tag/javascriptgaojichengxushejidisanban/">javascript高級程序設計第三版</a> <a style="width:120px;" title="第三方javascript編程" href="http://m.specialneedsforspecialkids.com/yun/tag/disanfangjavascriptbiancheng/">第三方javascript編程</a> </div> </div> <div id="q2gs02e" class="entry-copyright mb-30"> <p class="mb-15"> 文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。</p> <p>轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/105050.html</p> </div> <ul class="pre-next-page"> <li id="ckq00ug" class="ellipsis"><a class="hpf" href="http://m.specialneedsforspecialkids.com/yun/105049.html">上一篇:JavaScript 編程精解 中文第三版 十四、文檔對象模型</a></li> <li id="ii0wqcc" class="ellipsis"><a class="hpf" href="http://m.specialneedsforspecialkids.com/yun/105051.html">下一篇:JavaScript 編程精解 中文第三版 十二、項目:編程語言</a></li> </ul> </div> <div id="yoqyoue" class="about_topicone-mid"> <h3 class="top-com-title mb-0"><span data-id="0">相關文章</span></h3> <ul class="com_white-left-mid atricle-list-box"> <li> <div id="asm2wiw" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://m.specialneedsforspecialkids.com/yun/105029.html"><b><em>JavaScript</em> <em>編程</em><em>精解</em> <em>中文</em><em>第<em>三版</em></em> 零、前言</b></a></h2> <p class="ellipsis2 good">摘要:來源編程精解中文第三版翻譯項目原文譯者飛龍協議自豪地采用谷歌翻譯部分參考了編程精解第版,這是一本關于指導電腦的書。在可控的范圍內編寫程序是編程過程中首要解決的問題。我們可以用中文來描述這些指令將數字存儲在內存地址中的位置。 來源:ApacheCN『JavaScript 編程精解 中文第三版』翻譯項目原文:Introduction 譯者:飛龍 協議:CC BY-NC-SA 4.0 自豪地...</p> <div id="amyeyo2" class="com_white-left-info"> <div id="c22gm2q" class="com_white-left-infol"> <a href="http://m.specialneedsforspecialkids.com/yun/u-1631.html"><img src="http://m.specialneedsforspecialkids.com/yun/data/avatar/000/00/16/small_000001631.jpg" alt=""><span id="asmskk0" class="layui-hide64">sanyang</span></a> <time datetime="">2019-08-23 18:19</time> <span><i class="fa fa-commenting"></i>評論0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> <li> <div id="cgmckw0" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://m.specialneedsforspecialkids.com/yun/105027.html"><b><em>JavaScript</em> <em>編程</em><em>精解</em> <em>中文</em><em>第<em>三版</em></em> 二、程序結構</b></a></h2> <p class="ellipsis2 good">摘要:為了運行包裹的程序,可以將這些值應用于它們。在瀏覽器中,輸出出現在控制臺中。在英文版頁面上運行示例或自己的代碼時,會在示例之后顯示輸出,而不是在瀏覽器的控制臺中顯示。這被稱為條件執行。 來源:ApacheCN『JavaScript 編程精解 中文第三版』翻譯項目原文:Program Structure 譯者:飛龍 協議:CC BY-NC-SA 4.0 自豪地采用谷歌翻譯 部分參考了《J...</p> <div id="oswcwk0" class="com_white-left-info"> <div id="cumgyqc" class="com_white-left-infol"> <a href="http://m.specialneedsforspecialkids.com/yun/u-132.html"><img src="http://m.specialneedsforspecialkids.com/yun/data/avatar/000/00/01/small_000000132.jpg" alt=""><span id="qswogi0" class="layui-hide64">ThinkSNS</span></a> <time datetime="">2019-08-23 18:19</time> <span><i class="fa fa-commenting"></i>評論0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> <li> <div id="wyme2wg" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://m.specialneedsforspecialkids.com/yun/105044.html"><b><em>JavaScript</em> <em>編程</em><em>精解</em> <em>中文</em><em>第<em>三版</em></em> 十九、項目:像素藝術編輯器</b></a></h2> <p class="ellipsis2 good">摘要:相反,當響應指針事件時,它會調用創建它的代碼提供的回調函數,該函數將處理應用的特定部分。回調函數可能會返回另一個回調函數,以便在按下按鈕并且將指針移動到另一個像素時得到通知。它們為組件構造器的數組而提供。 來源:ApacheCN『JavaScript 編程精解 中文第三版』翻譯項目原文:Project: A Pixel Art Editor 譯者:飛龍 協議:CC BY-NC-SA 4...</p> <div id="acu0occ" class="com_white-left-info"> <div id="acswyky" class="com_white-left-infol"> <a href="http://m.specialneedsforspecialkids.com/yun/u-1207.html"><img src="http://m.specialneedsforspecialkids.com/yun/data/avatar/000/00/12/small_000001207.jpg" alt=""><span id="yqka0oc" class="layui-hide64">Meils</span></a> <time datetime="">2019-08-23 18:19</time> <span><i class="fa fa-commenting"></i>評論0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> <li> <div id="s2yc2ug" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://m.specialneedsforspecialkids.com/yun/105028.html"><b><em>JavaScript</em> <em>編程</em><em>精解</em> <em>中文</em><em>第<em>三版</em></em> 一、值,類型和運算符</b></a></h2> <p class="ellipsis2 good">摘要:來源編程精解中文第三版翻譯項目原文譯者飛龍協議自豪地采用谷歌翻譯部分參考了編程精解第版在機器的表面之下,程序在運轉。本章將會介紹程序當中的基本元素,包括簡單的值類型以及值運算符。示例中的乘法運算符優先級高于加法。 來源:ApacheCN『JavaScript 編程精解 中文第三版』翻譯項目原文:Values, Types, and Operators 譯者:飛龍 協議:CC BY-NC...</p> <div id="aqkei0e" class="com_white-left-info"> <div id="uk2oc0o" class="com_white-left-infol"> <a href="http://m.specialneedsforspecialkids.com/yun/u-942.html"><img src="http://m.specialneedsforspecialkids.com/yun/data/avatar/000/00/09/small_000000942.jpg" alt=""><span id="2eg0qcq" class="layui-hide64">wh469012917</span></a> <time datetime="">2019-08-23 18:19</time> <span><i class="fa fa-commenting"></i>評論0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> <li> <div id="eew0css" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://m.specialneedsforspecialkids.com/yun/105048.html"><b><em>JavaScript</em> <em>編程</em><em>精解</em> <em>中文</em><em>第<em>三版</em></em> 十五、處理事件</b></a></h2> <p class="ellipsis2 good">摘要:事件與節點每個瀏覽器事件處理器被注冊在上下文中。事件對象雖然目前為止我們忽略了它,事件處理器函數作為對象傳遞事件對象。若事件處理器不希望執行默認行為通常是因為已經處理了該事件,會調用事件對象的方法。 來源:ApacheCN『JavaScript 編程精解 中文第三版』翻譯項目原文:Handling Events 譯者:飛龍 協議:CC BY-NC-SA 4.0 自豪地采用谷歌翻譯 部分...</p> <div id="w2qi2mo" class="com_white-left-info"> <div id="ckm0igu" class="com_white-left-infol"> <a href="http://m.specialneedsforspecialkids.com/yun/u-1457.html"><img src="http://m.specialneedsforspecialkids.com/yun/data/avatar/000/00/14/small_000001457.jpg" alt=""><span id="mme2wwk" class="layui-hide64">Clect</span></a> <time datetime="">2019-08-23 18:19</time> <span><i class="fa fa-commenting"></i>評論0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> </ul> </div> <div id="wwmg02e" class="topicone-box-wangeditor"> <h3 class="top-com-title mb-64"><span>發表評論</span></h3> <div id="smq2iiy" class="xcp-publish-main flex_box_zd"> <div id="wgkcwki" class="unlogin-pinglun-box"> <a href="javascript:login()" class="grad">登陸后可評論</a> </div> </div> </div> <div id="qoqw0mw" class="site-box-content"> <div id="gskem2s" class="site-content-title"> <h3 class="top-com-title mb-64"><span>0條評論</span></h3> </div> <div id="agikcsg" class="pages"></ul></div> </div> </div> <div id="csasmeq" class="layui-col-md4 layui-col-lg3 com_white-right site-wrap-right"> <div id="0qkmsgi" class=""> <div id="22kioa0" class="com_layuiright-box user-msgbox"> <a href="http://m.specialneedsforspecialkids.com/yun/u-1511.html"><img src="http://m.specialneedsforspecialkids.com/yun/data/avatar/000/00/15/small_000001511.jpg" alt=""></a> <h3><a href="http://m.specialneedsforspecialkids.com/yun/u-1511.html" rel="nofollow">zhiwei</a></h3> <h6>男<span>|</span>高級講師</h6> <div id="kiacig2" class="flex_box_zd user-msgbox-atten"> <a href="javascript:attentto_user(1511)" id="attenttouser_1511" class="grad follow-btn notfollow attention">我要關注</a> <a href="javascript:login()" title="發私信" >我要私信</a> </div> <div id="ky20uui" class="user-msgbox-list flex_box_zd"> <h3 class="hpf">TA的文章</h3> <a href="http://m.specialneedsforspecialkids.com/yun/ut-1511.html" class="box_hxjz">閱讀更多</a> </div> <ul class="user-msgbox-ul"> <li><h3 class="ellipsis"><a href="http://m.specialneedsforspecialkids.com/yun/130847.html">unet</a></h3> <p>閱讀 1539<span>·</span>2023-04-26 00:25</p></li> <li><h3 class="ellipsis"><a href="http://m.specialneedsforspecialkids.com/yun/121271.html">傳說中程序員都是直男,程序員適合做老公嗎?</a></h3> <p>閱讀 926<span>·</span>2021-09-27 13:36</p></li> <li><h3 class="ellipsis"><a href="http://m.specialneedsforspecialkids.com/yun/115881.html">Codepen 每日精選(2018-3-26)</a></h3> <p>閱讀 936<span>·</span>2019-08-30 14:14</p></li> <li><h3 class="ellipsis"><a href="http://m.specialneedsforspecialkids.com/yun/114149.html">《第40天 : JQuery - 手風琴列表》</a></h3> <p>閱讀 2186<span>·</span>2019-08-29 17:10</p></li> <li><h3 class="ellipsis"><a href="http://m.specialneedsforspecialkids.com/yun/113131.html">css3重要語法匯總</a></h3> <p>閱讀 1018<span>·</span>2019-08-29 15:09</p></li> <li><h3 class="ellipsis"><a href="http://m.specialneedsforspecialkids.com/yun/111189.html">web app遇到的一些坑及小技能(持續更新...)</a></h3> <p>閱讀 1954<span>·</span>2019-08-28 18:21</p></li> <li><h3 class="ellipsis"><a href="http://m.specialneedsforspecialkids.com/yun/108854.html">網頁動畫性能日志(一)</a></h3> <p>閱讀 974<span>·</span>2019-08-26 13:27</p></li> <li><h3 class="ellipsis"><a href="http://m.specialneedsforspecialkids.com/yun/106912.html">前端技術日志 | 19年8月21日 | 新的 React DevTools 介紹</a></h3> <p>閱讀 984<span>·</span>2019-08-26 10:58</p></li> </ul> </div> <!-- 文章詳情右側廣告--> <div id="cosgos0" class="com_layuiright-box"> <h6 class="top-com-title"><span>最新活動</span></h6> <div id="kk2as0s" class="com_adbox"> <div id="wkcsuiw" class="layui-carousel" id="right-item"> <div carousel-item> <div> <a href="http://m.specialneedsforspecialkids.com/site/active/kuaijiesale.html?ytag=seo" rel="nofollow"> <img src="http://m.specialneedsforspecialkids.com/yun/data/attach/240625/2rTjEHmi.png" alt="云服務器"> </a> </div> <div> <a href="http://m.specialneedsforspecialkids.com/site/product/gpu.html" rel="nofollow"> <img src="http://m.specialneedsforspecialkids.com/yun/data/attach/240807/7NjZjdrd.png" alt="GPU云服務器"> </a> </div> </div> </div> </div> <!-- banner結束 --> <div id="myqwoo2" class="adhtml"> </div> <script> $(function(){ $.ajax({ type: "GET", url:"http://m.specialneedsforspecialkids.com/yun/ad/getad/1.html", cache: false, success: function(text){ $(".adhtml").html(text); } }); }) </script> </div> </div> </div> </div> </div> </section> <!-- wap拉出按鈕 --> <div id="kogyssg" class="site-tree-mobile layui-hide"> <i class="layui-icon layui-icon-spread-left"></i> </div> <!-- wap遮罩層 --> <div id="sg2smco" class="site-mobile-shade"></div> <!--付費閱讀 --> <div class="2agycqq" id="payread"> <div id="ki0u22m" class="layui-form-item">閱讀需要支付1元查看</div> <div id="k2qgycm" class="layui-form-item"><button class="btn-right">支付并查看</button></div> </div> <script> var prei=0; $(".site-seo-depict pre").each(function(){ var html=$(this).html().replace("<code>","").replace("</code>","").replace('<code class="javascript hljs" codemark="1">',''); $(this).attr('data-clipboard-text',html).attr("id","pre"+prei); $(this).html("").append("<code>"+html+"</code>"); prei++; }) $(".site-seo-depict img").each(function(){ if($(this).attr("src").indexOf('data:image/svg+xml')!= -1){ $(this).remove(); } }) $("LINK[href*='style-49037e4d27.css']").remove(); $("LINK[href*='markdown_views-d7a94ec6ab.css']").remove(); layui.use(['jquery', 'layer','code'], function(){ $("pre").attr("class","layui-code"); $("pre").attr("lay-title",""); $("pre").attr("lay-skin",""); layui.code(); $(".layui-code-h3 a").attr("class","copycode").html("復制代碼 ").attr("onclick","copycode(this)"); }); function copycode(target){ var id=$(target).parent().parent().attr("id"); var clipboard = new ClipboardJS("#"+id); clipboard.on('success', function(e) { e.clearSelection(); alert("復制成功") }); clipboard.on('error', function(e) { alert("復制失敗") }); } //$(".site-seo-depict").html($(".site-seo-depict").html().slice(0, -5)); </script> <link rel="stylesheet" type="text/css" href="http://m.specialneedsforspecialkids.com/yun/static/js/neweditor/code/styles/tomorrow-night-eighties.css"> <script src="http://m.specialneedsforspecialkids.com/yun/static/js/neweditor/code/highlight.pack.js" type="text/javascript"></script> <script src="http://m.specialneedsforspecialkids.com/yun/static/js/clipboard.js"></script> <script>hljs.initHighlightingOnLoad();</script> <script> function setcode(){ var _html=''; document.querySelectorAll('pre code').forEach((block) => { var _tmptext=$.trim($(block).text()); if(_tmptext!=''){ _html=_html+_tmptext; console.log(_html); } }); } </script> <script> function payread(){ layer.open({ type: 1, title:"付費閱讀", shadeClose: true, content: $('#payread') }); } // 舉報 function jupao_tip(){ layer.open({ type: 1, title:false, shadeClose: true, content: $('#jubao') }); } $(".getcommentlist").click(function(){ var _id=$(this).attr("dataid"); var _tid=$(this).attr("datatid"); $("#articlecommentlist"+_id).toggleClass("hide"); var flag=$("#articlecommentlist"+_id).attr("dataflag"); if(flag==1){ flag=0; }else{ flag=1; //加載評論 loadarticlecommentlist(_id,_tid); } $("#articlecommentlist"+_id).attr("dataflag",flag); }) $(".add-comment-btn").click(function(){ var _id=$(this).attr("dataid"); $(".formcomment"+_id).toggleClass("hide"); }) $(".btn-sendartcomment").click(function(){ var _aid=$(this).attr("dataid"); var _tid=$(this).attr("datatid"); var _content=$.trim($(".commenttext"+_aid).val()); if(_content==''){ alert("評論內容不能為空"); return false; } var touid=$("#btnsendcomment"+_aid).attr("touid"); if(touid==null){ touid=0; } addarticlecomment(_tid,_aid,_content,touid); }) $(".button_agree").click(function(){ var supportobj = $(this); var tid = $(this).attr("id"); $.ajax({ type: "GET", url:"http://m.specialneedsforspecialkids.com/yun/index.php?topic/ajaxhassupport/" + tid, cache: false, success: function(hassupport){ if (hassupport != '1'){ $.ajax({ type: "GET", cache:false, url: "http://m.specialneedsforspecialkids.com/yun/index.php?topic/ajaxaddsupport/" + tid, success: function(comments) { supportobj.find("span").html(comments+"人贊"); } }); }else{ alert("您已經贊過"); } } }); }); function attenquestion(_tid,_rs){ $.ajax({ //提交數據的類型 POST GET type:"POST", //提交的網址 url:"http://m.specialneedsforspecialkids.com/yun/favorite/topicadd.html", //提交的數據 data:{tid:_tid,rs:_rs}, //返回數據的格式 datatype: "json",//"xml", "html", "script", "json", "jsonp", "text". //在請求之前調用的函數 beforeSend:function(){}, //成功返回之后調用的函數 success:function(data){ var data=eval("("+data+")"); console.log(data) if(data.code==2000){ layer.msg(data.msg,function(){ if(data.rs==1){ //取消收藏 $(".layui-layer-tips").attr("data-tips","收藏文章"); $(".layui-layer-tips").html('<i class="fa fa-heart-o"></i>'); } if(data.rs==0){ //收藏成功 $(".layui-layer-tips").attr("data-tips","已收藏文章"); $(".layui-layer-tips").html('<i class="fa fa-heart"></i>') } }) }else{ layer.msg(data.msg) } } , //調用執行后調用的函數 complete: function(XMLHttpRequest, textStatus){ postadopt=true; }, //調用出錯執行的函數 error: function(){ //請求出錯處理 postadopt=false; } }); } </script> <footer> <div id="kg00s0c" class="layui-container"> <div id="cmsio0a" class="flex_box_zd"> <div id="222a0se" class="left-footer"> <h6><a href="http://m.specialneedsforspecialkids.com/"><img src="http://m.specialneedsforspecialkids.com/yun/static/theme/ukd//images/logo.png" alt="UCloud (優刻得科技股份有限公司)"></a></h6> <p>UCloud (優刻得科技股份有限公司)是中立、安全的云計算服務平臺,堅持中立,不涉足客戶業務領域。公司自主研發IaaS、PaaS、大數據流通平臺、AI服務平臺等一系列云計算產品,并深入了解互聯網、傳統企業在不同場景下的業務需求,提供公有云、混合云、私有云、專有云在內的綜合性行業解決方案。</p> </div> <div id="akkcw02" class="right-footer layui-hidemd"> <ul class="flex_box_zd"> <li> <h6>UCloud與云服務</h6> <p><a href="http://m.specialneedsforspecialkids.com/site/about/intro/">公司介紹</a></p> <p><a >加入我們</a></p> <p><a href="http://m.specialneedsforspecialkids.com/site/ucan/onlineclass/">UCan線上公開課</a></p> <p><a href="http://m.specialneedsforspecialkids.com/site/solutions.html" >行業解決方案</a></p> <p><a href="http://m.specialneedsforspecialkids.com/site/pro-notice/">產品動態</a></p> </li> <li> <h6>友情鏈接</h6> <p><a >GPU算力平臺</a></p> <p><a >UCloud私有云</a></p> <p><a >SurferCloud</a></p> <p><a >工廠仿真軟件</a></p> <p><a >Pinex</a></p> <p><a >AI繪畫</a></p> </li> <li> <h6>社區欄目</h6> <p><a href="http://m.specialneedsforspecialkids.com/yun/column/index.html">專欄文章</a></p> <p><a href="http://m.specialneedsforspecialkids.com/yun/udata/">專題地圖</a></p> </li> <li> <h6>常見問題</h6> <p><a href="http://m.specialneedsforspecialkids.com/site/ucsafe/notice.html" >安全中心</a></p> <p><a href="http://m.specialneedsforspecialkids.com/site/about/news/recent/" >新聞動態</a></p> <p><a href="http://m.specialneedsforspecialkids.com/site/about/news/report/">媒體動態</a></p> <p><a href="http://m.specialneedsforspecialkids.com/site/cases.html">客戶案例</a></p> <p><a href="http://m.specialneedsforspecialkids.com/site/notice/">公告</a></p> </li> <li> <span><img src="https://static.ucloud.cn/7a4b6983f4b94bcb97380adc5d073865.png" alt="優刻得"></span> <p>掃掃了解更多</p></div> </div> <div id="caqcm00" class="copyright">Copyright ? 2012-2023 UCloud 優刻得科技股份有限公司<i>|</i><a rel="nofollow" >滬公網安備 31011002000058號</a><i>|</i><a rel="nofollow" ></a> 滬ICP備12020087號-3</a><i>|</i> <script type="text/javascript" src="https://gyfk12.kuaishang.cn/bs/ks.j?cI=197688&fI=125915" charset="utf-8"></script> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?290c2650b305fc9fff0dbdcafe48b59d"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-DZSMXQ3P9N"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-DZSMXQ3P9N'); </script> <script> (function(){ var el = document.createElement("script"); el.src = "https://lf1-cdn-tos.bytegoofy.com/goofy/ttzz/push.js?99f50ea166557aed914eb4a66a7a70a4709cbb98a54ecb576877d99556fb4bfc3d72cd14f8a76432df3935ab77ec54f830517b3cb210f7fd334f50ccb772134a"; el.id = "ttzz"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(el, s); })(window) </script></div> </div> </footer> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://m.specialneedsforspecialkids.com/" title="国产xxxx99真实实拍">国产xxxx99真实实拍</a> <div class="friend-links"> <a href="http://m.cp97744.com/">国产一区电影</a> </div> </div> </footer> <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="o6wsq" class="pl_css_ganrao" style="display: none;"><acronym id="o6wsq"></acronym><kbd id="o6wsq"><tr id="o6wsq"><wbr id="o6wsq"></wbr></tr></kbd><abbr id="o6wsq"></abbr><object id="o6wsq"></object><sup id="o6wsq"><source id="o6wsq"><strong id="o6wsq"></strong></source></sup><option id="o6wsq"><delect id="o6wsq"><tbody id="o6wsq"></tbody></delect></option><abbr id="o6wsq"></abbr><sup id="o6wsq"></sup><tr id="o6wsq"><s id="o6wsq"><bdo id="o6wsq"></bdo></s></tr><noscript id="o6wsq"><pre id="o6wsq"><blockquote id="o6wsq"></blockquote></pre></noscript><fieldset id="o6wsq"><table id="o6wsq"><noscript id="o6wsq"></noscript></table></fieldset><tr id="o6wsq"><s id="o6wsq"><small id="o6wsq"></small></s></tr><nav id="o6wsq"><small id="o6wsq"><button id="o6wsq"></button></small></nav><center id="o6wsq"></center><code id="o6wsq"></code><samp id="o6wsq"><th id="o6wsq"><object id="o6wsq"></object></th></samp><tr id="o6wsq"></tr><tr id="o6wsq"></tr><strike id="o6wsq"></strike><strong id="o6wsq"></strong><tbody id="o6wsq"></tbody><dl id="o6wsq"><nav id="o6wsq"><li id="o6wsq"></li></nav></dl><option id="o6wsq"><kbd id="o6wsq"><tr id="o6wsq"></tr></kbd></option><acronym id="o6wsq"><td id="o6wsq"><fieldset id="o6wsq"></fieldset></td></acronym><tbody id="o6wsq"></tbody><table id="o6wsq"><kbd id="o6wsq"><pre id="o6wsq"></pre></kbd></table><optgroup id="o6wsq"><ul id="o6wsq"><sup id="o6wsq"></sup></ul></optgroup><tr id="o6wsq"><s id="o6wsq"><bdo id="o6wsq"></bdo></s></tr><rt id="o6wsq"><tbody id="o6wsq"><pre id="o6wsq"></pre></tbody></rt><noframes id="o6wsq"></noframes><strike id="o6wsq"><input id="o6wsq"><noscript id="o6wsq"></noscript></input></strike><noframes id="o6wsq"></noframes><delect id="o6wsq"></delect><s id="o6wsq"><small id="o6wsq"><option id="o6wsq"></option></small></s><noscript id="o6wsq"></noscript><dl id="o6wsq"></dl><center id="o6wsq"></center><source id="o6wsq"></source><dl id="o6wsq"><optgroup id="o6wsq"><li id="o6wsq"></li></optgroup></dl><wbr id="o6wsq"></wbr><cite id="o6wsq"></cite><abbr id="o6wsq"><center id="o6wsq"><dd id="o6wsq"></dd></center></abbr><table id="o6wsq"><tr id="o6wsq"><acronym id="o6wsq"></acronym></tr></table><cite id="o6wsq"></cite><small id="o6wsq"></small><sup id="o6wsq"></sup><acronym id="o6wsq"></acronym><tbody id="o6wsq"></tbody><abbr id="o6wsq"></abbr><button id="o6wsq"></button><tbody id="o6wsq"></tbody><delect id="o6wsq"></delect><li id="o6wsq"></li><strike id="o6wsq"><input id="o6wsq"><noscript id="o6wsq"></noscript></input></strike><delect id="o6wsq"></delect><noscript id="o6wsq"></noscript><delect id="o6wsq"></delect><source id="o6wsq"></source><sup id="o6wsq"></sup><del id="o6wsq"></del><code id="o6wsq"></code><nav id="o6wsq"></nav><small id="o6wsq"></small><tr id="o6wsq"><acronym id="o6wsq"><xmp id="o6wsq"></xmp></acronym></tr><optgroup id="o6wsq"></optgroup><dd id="o6wsq"></dd><optgroup id="o6wsq"><abbr id="o6wsq"><sup id="o6wsq"></sup></abbr></optgroup><noscript id="o6wsq"></noscript><object id="o6wsq"></object><wbr id="o6wsq"><bdo id="o6wsq"><abbr id="o6wsq"></abbr></bdo></wbr><li id="o6wsq"></li><rt id="o6wsq"><code id="o6wsq"><noframes id="o6wsq"></noframes></code></rt><abbr id="o6wsq"></abbr><wbr id="o6wsq"><cite id="o6wsq"><menu id="o6wsq"></menu></cite></wbr><pre id="o6wsq"><td id="o6wsq"><strike id="o6wsq"></strike></td></pre><pre id="o6wsq"></pre><abbr id="o6wsq"></abbr><ul id="o6wsq"><sup id="o6wsq"><center id="o6wsq"></center></sup></ul><li id="o6wsq"></li><acronym id="o6wsq"></acronym><li id="o6wsq"></li><noscript id="o6wsq"></noscript><ul id="o6wsq"></ul><delect id="o6wsq"><tr id="o6wsq"><wbr id="o6wsq"></wbr></tr></delect><tfoot id="o6wsq"></tfoot><noscript id="o6wsq"></noscript><pre id="o6wsq"></pre><input id="o6wsq"></input><table id="o6wsq"></table><bdo id="o6wsq"></bdo><pre id="o6wsq"><wbr id="o6wsq"><fieldset id="o6wsq"></fieldset></wbr></pre><th id="o6wsq"><object id="o6wsq"><small id="o6wsq"></small></object></th><strike id="o6wsq"><menu id="o6wsq"><noscript id="o6wsq"></noscript></menu></strike><li id="o6wsq"></li><delect id="o6wsq"></delect><cite id="o6wsq"></cite><rt id="o6wsq"><code id="o6wsq"><noframes id="o6wsq"></noframes></code></rt><ul id="o6wsq"></ul><kbd id="o6wsq"><tbody id="o6wsq"><s id="o6wsq"></s></tbody></kbd><xmp id="o6wsq"></xmp><abbr id="o6wsq"></abbr><dd id="o6wsq"><th id="o6wsq"><object id="o6wsq"></object></th></dd><th id="o6wsq"></th><optgroup id="o6wsq"></optgroup><source id="o6wsq"></source><button id="o6wsq"><samp id="o6wsq"><th id="o6wsq"></th></samp></button><abbr id="o6wsq"><sup id="o6wsq"><source id="o6wsq"></source></sup></abbr><option id="o6wsq"><dd id="o6wsq"><tbody id="o6wsq"></tbody></dd></option><object id="o6wsq"></object><acronym id="o6wsq"></acronym><dl id="o6wsq"><optgroup id="o6wsq"><li id="o6wsq"></li></optgroup></dl><delect id="o6wsq"></delect><sup id="o6wsq"><source id="o6wsq"><code id="o6wsq"></code></source></sup><s id="o6wsq"><small id="o6wsq"><abbr id="o6wsq"></abbr></small></s><center id="o6wsq"></center><abbr id="o6wsq"></abbr><th id="o6wsq"><object id="o6wsq"><small id="o6wsq"></small></object></th><input id="o6wsq"></input><object id="o6wsq"></object><object id="o6wsq"></object><dfn id="o6wsq"><source id="o6wsq"><dl id="o6wsq"></dl></source></dfn><menu id="o6wsq"></menu><sup id="o6wsq"></sup><delect id="o6wsq"></delect><pre id="o6wsq"></pre><source id="o6wsq"></source><ul id="o6wsq"><dfn id="o6wsq"><source id="o6wsq"></source></dfn></ul><object id="o6wsq"></object><tbody id="o6wsq"></tbody><object id="o6wsq"></object><th id="o6wsq"><object id="o6wsq"><li id="o6wsq"></li></object></th><ul id="o6wsq"><dfn id="o6wsq"><source id="o6wsq"></source></dfn></ul><option id="o6wsq"><dd id="o6wsq"><th id="o6wsq"></th></dd></option><rt id="o6wsq"><tbody id="o6wsq"><noframes id="o6wsq"></noframes></tbody></rt><del id="o6wsq"></del><th id="o6wsq"></th><option id="o6wsq"></option><fieldset id="o6wsq"></fieldset><del id="o6wsq"></del><em id="o6wsq"><xmp id="o6wsq"><fieldset id="o6wsq"></fieldset></xmp></em><tbody id="o6wsq"><object id="o6wsq"><small id="o6wsq"></small></object></tbody><del id="o6wsq"></del><center id="o6wsq"></center><tfoot id="o6wsq"></tfoot><center id="o6wsq"></center><sup id="o6wsq"></sup><pre id="o6wsq"></pre><object id="o6wsq"></object><tfoot id="o6wsq"></tfoot><cite id="o6wsq"></cite></div> <script src="http://m.specialneedsforspecialkids.com/yun/static/theme/ukd/js/common.js"></script> <<script type="text/javascript"> $(".site-seo-depict *,.site-content-answer-body *,.site-body-depict *").css("max-width","100%"); </script> </html>