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

資訊專欄INFORMATION COLUMN

【譯】Headless Chrome 入門指南

toddmark / 1004人閱讀

摘要:確切位置因平臺而異。如果以編程方式使用,這個(gè)頁面也是一個(gè)強(qiáng)大的調(diào)試工具,能看到所有原始的協(xié)議命令通過連線,於瀏覽器進(jìn)行通信。警告協(xié)議可以做很多有趣的事,但作為入門選項(xiàng)他令人沮喪。目前,提供了比協(xié)議高級別的。

本文翻譯自:Getting Started with Headless Chrome
原文更新時(shí)間:July 28,2017
作者:Eric Bidelman(Engineer @ Google. Working on Chrome & the web.)
譯者:Pandorym

Headless Chrome由 Chrome 59 帶來。這是一種在無界面環(huán)境中運(yùn)行 Chrome 瀏覽器的方法。本質(zhì)上,就是運(yùn)行無界面的的 Chrome !他為命令行帶來了 Chromium 和 Blink 渲染引擎提供的所有現(xiàn)代的 Web 平臺特性

他有什麼用呢?

用於對於自動(dòng)化測試和不需要能看到UI外殼的服務(wù)器環(huán)境,Headless 瀏覽器是一個(gè)極好的工具。舉個(gè)例子,你可能要對一個(gè)真實(shí)的 Web 頁面進(jìn)行一些測試,為它創(chuàng)建一個(gè) PDF ,或者就是檢查噶瀏覽器如何渲染一個(gè) URL 。

提示:Headless模式在Mac和Linux上是Chrome 59可用。Windows的支持將在Chrome 60到來。你可以打開chrome://version檢查當(dāng)前版本。

開啟 Headless(CLI)

啟動(dòng) Headless 模式最簡單的方式四在命令行中打開 Chrome 二進(jìn)制文件。如果你已經(jīng)安裝Chrome 59+,攜帶--headless標(biāo)識啟動(dòng)Chrome:

chrome 
  --headless                    # 使用 headless 模式.
  --disable-gpu                 # 現(xiàn)在暫時(shí)還需要.
  --remote-debugging-port=9222  
  https://www.chromestatus.com   # 將打開的 URL. 默認(rèn)打開 about:blank.

注意:現(xiàn)在,你需要包含--disable-gpu參數(shù)。不過這個(gè)參數(shù)最終會被丟棄。

chrome需要指向你安裝的 Chrome。確切位置因平臺而異。由於我在 Mac 上,我為我安裝的每個(gè)版本的 Chrome 都創(chuàng)建了方便的別名。

如果你在Chrome的穩(wěn)定版頻道不能進(jìn)行這個(gè)測試,我推薦使用chrome-canary

alias chrome="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
alias chrome-canary="/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary"
alias chromium="/Applications/Chromium.app/Contents/MacOS/Chromium"

從 這裡 下載 Chrome Canary。

命令行特性

在某些情況下,你可能不需要以編程方式編寫 Headless Chrome。這是一些對執(zhí)行普通任務(wù)有用的命令行標(biāo)識。

打印 DOM

--dump-dom標(biāo)識,打印document.body.innerHTML到標(biāo)準(zhǔn)輸出:

chrome --headless --disable-gpu --dump-dom https://www.chromestatus.com/
創(chuàng)建 PDF

--print-to-pdf標(biāo)識,為頁面創(chuàng)建一個(gè)PDF文件:

chrome --headless --disable-gpu --print-to-pdf https://www.chromestatus.com/
取得截屏

要捕獲一個(gè)頁面的屏幕截圖,使用--screenshot標(biāo)識:

# Size of a standard letterhead.
chrome --headless --disable-gpu --screenshot --window-size=1280,1696 https://www.chromestatus.com/

# Nexus 5x
chrome --headless --disable-gpu --screenshot --window-size=412,732 https://www.chromestatus.com/

使用--screenshot標(biāo)識運(yùn)行,將在當(dāng)前工作目錄產(chǎn)生一個(gè)命名為screenshot.png的文件。如果你正在尋找完整的頁面截圖,事情會更複雜一些。這有一個(gè) Davil Schnurr 發(fā)佈的優(yōu)秀的Blog,包含你需要的大部分內(nèi)容。查看:使用 Headless Chrome 作為自動(dòng)截屏工具。

REPL 模式(read-eval-print loop)

--repl標(biāo)識使 Headless 運(yùn)行砸地一個(gè)特定的模式。你可以通過命令行,要求在瀏覽器中執(zhí)行JS表達(dá)式:

$ chrome --headless --disable-gpu --repl https://www.chromestatus.com/
[0608/112805.245285:INFO:headless_shell.cc(278)] Type a Javascript expression to evaluate or "quit" to exit.
>>> location.href
{"result":{"type":"string","value":"https://www.chromestatus.com/features"}}
>>> quit
$
脫離瀏覽器界面調(diào)試Chrome

當(dāng)你使用--remote-debug-port=9222運(yùn)行 Chrome 時(shí),他將啟動(dòng)一個(gè)實(shí)例,并激活 DevTools 協(xié)議。這個(gè)協(xié)議用於連接 Chrome ,和驅(qū)動(dòng) Headless 瀏覽器實(shí)例。他也用於使用 Sublime,VS Code 和 Node 等工具遠(yuǎn)程調(diào)試應(yīng)用程序。#協(xié)同

由於你沒有瀏覽器 UI 查看頁面,在另一個(gè)瀏覽器進(jìn)入http://localhost:9222以檢查他正在工作。你將在視察頁面看到一個(gè)列表,在這你可以通過點(diǎn)擊來查看 Headless 的渲染。

在這,你可以使用熟悉的 DevTools 特性像通常那樣去檢查、調(diào)試和調(diào)整頁面。如果以編程方式使用 Headless,這個(gè)頁面也是一個(gè)強(qiáng)大的調(diào)試工具,能看到所有原始的 DevTools 協(xié)議命令通過連線,於瀏覽器進(jìn)行通信。

使用編程方式(Node) 啟動(dòng) Chrome

在之前的章節(jié),我們使用--headless --remote-debugging-port=9222手動(dòng)啟動(dòng)Chrome。然後,為了完全自動(dòng)化測試,你可能想在你的應(yīng)用程序中生成Chrome。

一個(gè)方法是使用child-process

const execFile = require("child_process").execFile;

function launchHeadlessChrome(url, callback) {
  // Assuming MacOSx.
  const CHROME = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome";
  execFile(CHROME, ["--headless", "--disable-gpu", "--remote-debugging-port=9222", url], callback);
}

launchHeadlessChrome("https://www.chromestatus.com", (err, stdout, stderr) => {
  ...
});

但你想要一個(gè)跨多平臺的解決方案時(shí),事情就變得棘手了。就看看這硬編碼的 Chrome 路徑吧 :(

使用 ChromeLauncher

Lighthouse 是一個(gè)用於測試Web應(yīng)用程序質(zhì)量的極好的工具。有一個(gè)用於啟動(dòng) Chrome 的強(qiáng)大的模塊,之前被包含在 Lightouse 內(nèi)部,但現(xiàn)在可以獨(dú)立使用了。chrome-launcher NPM 模塊將尋找 Chrome 的安裝位置、設(shè)置一個(gè)調(diào)試實(shí)例、啟動(dòng)瀏覽器,并在你的應(yīng)用程序完成時(shí)結(jié)束他。最優(yōu)秀的是它跨多平臺工作,感謝 Node !

默認(rèn)的,chrome-launcher將啟動(dòng) Chrome Canary (如果安裝了),但你能手動(dòng)更改選擇使用哪一個(gè) Chrome。要使用他,先從 npm 安裝:

yarn add chrome-launcher

Example - 使用chrome-launcher啟動(dòng) Headless

const chromeLauncher = require("chrome-launcher");

// Optional: set logging level of launcher to see its output.
// Install it using: yarn add lighthouse-logger
// const log = require("lighthouse-logger");
// log.setLevel("info");

/**
 * Launches a debugging instance of Chrome.
 * @param {boolean=} headless True (default) launches Chrome in headless mode.
 *     False launches a full version of Chrome.
 * @return {Promise}
 */
function launchChrome(headless=true) {
  return chromeLauncher.launch({
    // port: 9222, // Uncomment to force a specific port of your choice.
    chromeFlags: [
      "--window-size=412,732",
      "--disable-gpu",
      headless ? "--headless" : ""
    ]
  });
}

launchChrome().then(chrome => {
  console.log(`Chrome debuggable on port: ${chrome.port}`);
  ...
  // chrome.kill();
});

運(yùn)行這個(gè)腳本并不會做什麼事,但你應(yīng)該在任務(wù)管理器中看到一個(gè) Chrome 實(shí)例啟動(dòng),他載入了about:blank。記著,這不會有任何瀏覽器界面,We"re headless.

要控制瀏覽器,我們需要 DevTools 協(xié)議!

檢索關(guān)於界面的信息

chrome-remote-interface是一個(gè)很好的 Node 包,他提供了 DevTools 協(xié)議可用的 APIs。你可以使用他操作 Headless Chrome,跳轉(zhuǎn)到頁面,獲取關(guān)於頁面的相關(guān)信息。

警告:DevTools 協(xié)議可以做很多有趣的事,但作為入門選項(xiàng)他令人沮喪。我建議先花費(fèi)一點(diǎn)時(shí)間瀏覽 DevTools Protocol Viewer,然後移步到chrome-remote-interface的API文檔,看看他是如何包裝原始協(xié)議的。

讓我們安裝這個(gè)庫:

yarn add chrome-remote-interface
Examples

Example - 打印 user agent

const CDP = require("chrome-remote-interface");

...

launchChrome().then(async chrome => {
  const version = await CDP.Version({port: chrome.port});
  console.log(version["User-Agent"]);
});

返回值大概像這樣:HeadlessChrome/60.0.3082.0

Example - 檢查這個(gè)網(wǎng)站是否存在 web app manifest

const CDP = require("chrome-remote-interface");

...

(async function() {

const chrome = await launchChrome();
const protocol = await CDP({port: chrome.port});

// Extract the DevTools protocol domains we need and enable them.
// See API docs: https://chromedevtools.github.io/devtools-protocol/
const {Page} = protocol;
await Page.enable();

Page.navigate({url: "https://www.chromestatus.com/"});

// Wait for window.onload before doing stuff.
Page.loadEventFired(async () => {
  const manifest = await Page.getAppManifest();

  if (manifest.url) {
    console.log("Manifest: " + manifest.url);
    console.log(manifest.data);
  } else {
    console.log("Site has no app manifest");
  }

  protocol.close();
  chrome.kill(); // Kill Chrome.
});

})();

Example - 使用 DOM APIs 取得頁面的</b></p> <pre>const CDP = require("chrome-remote-interface"); ... (async function() { const chrome = await launchChrome(); const protocol = await CDP({port: chrome.port}); // Extract the DevTools protocol domains we need and enable them. // See API docs: https://chromedevtools.github.io/devtools-protocol/ const {Page, Runtime} = protocol; await Promise.all([Page.enable(), Runtime.enable()]); Page.navigate({url: "https://www.chromestatus.com/"}); // Wait for window.onload before doing stuff. Page.loadEventFired(async () => { const js = "document.querySelector("title").textContent"; // Evaluate the JS expression in the page. const result = await Runtime.evaluate({expression: js}); console.log("Title of page: " + result.result.value); protocol.close(); chrome.kill(); // Kill Chrome. }); })(); </pre> <b>使用 Selenium,WebDriver,和ChromeDriver</b> <p>現(xiàn)在,Selenium打開了一個(gè)完整的 Chrome 實(shí)例。換句話說,這是一個(gè)自動(dòng)化的解決方案,但不是完全 Headless。但是Selenium可以配置運(yùn)行 Headless Chrome,只需少量配置即可。如果你想要配置的完全指南,我推薦 Running Selenium with Headless Chrome,但我已經(jīng)在列出了一些例子,讓你可以快速開始。</p> <b>使用 ChromeDriver</b> <p>ChromeDriver 2.3.0 支持 Chrome 59 及之後的版本,並且工作於 Headless Chrome。在某些情況下,你可能需要 Chrome 60 來避免 Bugs。舉個(gè)例子,我們已經(jīng)知道 Chrome 59 的獲取截圖存在問題。</p> <p>安裝:</p> <pre>yarn add selenium-webdriver chromedriver </pre> <p>Example:</p> <pre>const fs = require("fs"); const webdriver = require("selenium-webdriver"); const chromedriver = require("chromedriver"); // This should be the path to your Canary installation. // I"m assuming Mac for the example. const PATH_TO_CANARY = "/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary"; const chromeCapabilities = webdriver.Capabilities.chrome(); chromeCapabilities.set("chromeOptions", { binary: PATH_TO_CANARY // Screenshots require Chrome 60. Force Canary. "args": [ "--headless", ] }); const driver = new webdriver.Builder() .forBrowser("chrome") .withCapabilities(chromeCapabilities) .build(); // Navigate to google.com, enter a search. driver.get("https://www.google.com/"); driver.findElement({name: "q"}).sendKeys("webdriver"); driver.findElement({name: "btnG"}).click(); driver.wait(webdriver.until.titleIs("webdriver - Google Search"), 1000); // Take screenshot of results page. Save to disk. driver.takeScreenshot().then(base64png => { fs.writeFileSync("screenshot.png", new Buffer(base64png, "base64")); }); driver.quit(); </pre> <b>使用 WebDriverIO</b> <p>WebDriverIO 是一個(gè) Selenium WebDirver 上的的高級別 API。</p> <p>安裝:</p> <pre>yarn add webdriverio chromedriver </pre> <p>Example - 過濾 chromestatus.com 上的 CSS 特性</p> <pre>const webdriverio = require("webdriverio"); const chromedriver = require("chromedriver"); // This should be the path to your Canary installation. // I"m assuming Mac for the example. const PATH_TO_CANARY = "/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary"; const PORT = 9515; chromedriver.start([ "--url-base=wd/hub", `--port=${PORT}`, "--verbose" ]); (async () => { const opts = { port: PORT, desiredCapabilities: { browserName: "chrome", chromeOptions: { binary: PATH_TO_CANARY // Screenshots require Chrome 60. Force Canary. args: ["--headless"] } } }; const browser = webdriverio.remote(opts).init(); await browser.url("https://www.chromestatus.com/features"); const title = await browser.getTitle(); console.log(`Title: ${title}`); await browser.waitForText(".num-features", 3000); let numFeatures = await browser.getText(".num-features"); console.log(`Chrome has ${numFeatures} total features`); await browser.setValue("input[type="search"]", "CSS"); console.log("Filtering features..."); await browser.pause(1000); numFeatures = await browser.getText(".num-features"); console.log(`Chrome has ${numFeatures} CSS features`); const buffer = await browser.saveScreenshot("screenshot.png"); console.log("Saved screenshot..."); chromedriver.stop(); browser.end(); })(); </pre> <b>更多資源</b> <p>這是一些有用的入門資源:</p> <p>文檔</p> <p><p>DevTools Protocol Viewer - API 參考文檔</p></p> <p>工具</p> <p><p>chrome-remote-interface - node 模塊,封裝了 DevTools 協(xié)議</p></p> <p><p>Lighthouse - Web app 質(zhì)量自動(dòng)化測試工具; 大量用於協(xié)議</p></p> <p><p>chrome-launcher - node 模塊, 啟動(dòng) Chrome, 準(zhǔn)備自動(dòng)化</p></p> <p>演示</p> <p><p>The Headless Web - Paul Kinlan 發(fā)佈的優(yōu)秀的博客,關(guān)於使用 Headless。api.ai 也是域名。</p></p> <b>FAQ</b> <p><strong>我需要<b>--disable-gpu</b>標(biāo)識嗎?</strong></p> <p>是的,現(xiàn)在需要。<b>--disable-gpu</b>標(biāo)識是暫時(shí)處理一些 Bug 的必要條件。在未來的 Chrome 版本中不需要這個(gè)標(biāo)識???https://crbug.com/546953#c152 和 https://crbug.com/695212 獲得更多信息。</p> <p><strong>所以我仍然需要 Xvfb?</strong></p> <p>不需要。Headless Chrome 不使用窗口,所以不再需要像 Xvfb 這樣的展示服務(wù)。你可以拋開它,開心地運(yùn)行自動(dòng)化測試。</p> <p>什麼是 Xvfb? Xvfb 是一個(gè)類 Unix 系統(tǒng)的內(nèi)存顯示服務(wù)器,可以讓你運(yùn)行圖形應(yīng)用程序(如 Chrome),無需附加物理顯示器。許多人使用 Xvfb 運(yùn)行早期版本的 Chrome 進(jìn)行 「Headless」測試。</p> <p><strong>我要如何創(chuàng)建一個(gè) Docker 容器運(yùn)行 Headless Chrome?</strong></p> <p>查看 lighthouse-ci。他有一個(gè)例子 Dockerfile,它使用 Ubuntu 為基本映像,並在 APP Engine Flexible 容器中安裝、運(yùn)行 Lightouse。</p> <p><strong>我可以和 Selenium / WebDriver / ChromeDriver 一起使用嗎?</strong></p> <p>可以,看上文「使用 Selenium,WebDriver,和ChromeDriver」。</p> <p><strong>他和 PhantomJS 有什麼關(guān)係?</strong></p> <p>Headless Chrome 是一個(gè)於 PhantomJS 相似的工具。兩者都可用於 Headless 環(huán)境下的自動(dòng)化測試。兩者主要的區(qū)別在於,Phantom 使用舊版本的 WebKit 作為渲染引擎,Headless Chrome 使用最新版本的 Blink。</p> <p>目前,Phantom 提供了比 DevTools 協(xié)議 高級別的 API。</p> <p><strong>在哪提交 bugs?</strong></p> <p>對於 Headless Chrome 的 Bugs,crbug.com。<br>對於 DevTools 協(xié)議的 Bugs,github.com/ChromeDevTools/devtools-protocol。</p> </div> <div id="7vx7vht" class="mt-64 tags-seach" > <div id="vdp5llh" class="tags-info"> <a style="width:120px;" title="GPU云服務(wù)器" href="http://m.specialneedsforspecialkids.com/site/product/gpu.html">GPU云服務(wù)器</a> <a style="width:120px;" title="云服務(wù)器" href="http://m.specialneedsforspecialkids.com/site/active/kuaijiesale.html?ytag=seo">云服務(wù)器</a> <a style="width:120px;" title="Headless" href="http://m.specialneedsforspecialkids.com/yun/tag/Headless/">Headless</a> <a style="width:120px;" title="Chrome" href="http://m.specialneedsforspecialkids.com/yun/tag/Chrome/">Chrome</a> <a style="width:120px;" title="chrome cdn" href="http://m.specialneedsforspecialkids.com/yun/tag/chrome cdn/">chrome cdn</a> <a style="width:120px;" title="chrome+webrtc" href="http://m.specialneedsforspecialkids.com/yun/tag/chrome+webrtc/">chrome+webrtc</a> </div> </div> <div id="bj7p75b" class="entry-copyright mb-30"> <p class="mb-15"> 文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。</p> <p>轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/84457.html</p> </div> <ul class="pre-next-page"> <li id="nzrjpdd" class="ellipsis"><a class="hpf" href="http://m.specialneedsforspecialkids.com/yun/84456.html">上一篇:babel知多少</a></li> <li id="dj5d7bb" class="ellipsis"><a class="hpf" href="http://m.specialneedsforspecialkids.com/yun/84458.html">下一篇:從零實(shí)現(xiàn)一個(gè)簡單的 Promise</a></li> </ul> </div> <div id="pvd75xl" class="about_topicone-mid"> <h3 class="top-com-title mb-0"><span data-id="0">相關(guān)文章</span></h3> <ul class="com_white-left-mid atricle-list-box"> <li> <div id="9r7x5bb" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://m.specialneedsforspecialkids.com/yun/84531.html"><b>【<em>譯</em>】<em>chrome</em>-remote-interface</b></a></h2> <p class="ellipsis2 good">摘要:該支持下列事件當(dāng)?shù)降倪B接已建立時(shí)觸發(fā)。取得該調(diào)試協(xié)議描述符。在關(guān)閉請求收到響應(yīng)后執(zhí)行,他將獲得下列參數(shù)一個(gè)對象,指明成功狀態(tài)當(dāng)缺省時(shí),將返回一個(gè)對象。當(dāng)缺省時(shí),將返回一個(gè)對象,並且狀態(tài)取決于屬性。 本文翻譯自:chrome-remote-interface原文更新時(shí)間:July 21,2017譯者:Pandorym Chrome 調(diào)試協(xié)議 的接口,他提供一個(gè)使用 JavaScript ...</p> <div id="j7ld7t5" class="com_white-left-info"> <div id="f7brnzz" class="com_white-left-infol"> <a href="http://m.specialneedsforspecialkids.com/yun/u-125.html"><img src="http://m.specialneedsforspecialkids.com/yun/data/avatar/000/00/01/small_000000125.jpg" alt=""><span id="zrvdt7p" class="layui-hide64">lentoo</span></a> <time datetime="">2019-08-20 18:27</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="7zfldpn" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://m.specialneedsforspecialkids.com/yun/84468.html"><b>【<em>譯</em>】<em>Chrome</em> Launcher npm v0.3.2</b></a></h2> <p class="ellipsis2 good">摘要:本文翻譯自原文更新時(shí)間譯者從輕鬆啟動(dòng)。禁用了許多服務(wù),他們對於自動(dòng)化情景是無用的。自動(dòng)定位二進(jìn)制文件的位置進(jìn)行啟動(dòng)。每次啟動(dòng)都使用一個(gè)新的,並在中清除它。對於可配置性的細(xì)節(jié),提供一些設(shè)置選項(xiàng)。然後在中,像這樣使用它 本文翻譯自:Chrome Launcher原文更新時(shí)間:July 21,2017譯者:Pandorym 從 Node 輕鬆啟動(dòng) Google Chrome。 禁用了許多 ...</p> <div id="pjvldnl" class="com_white-left-info"> <div id="bfjnrdf" class="com_white-left-infol"> <a href="http://m.specialneedsforspecialkids.com/yun/u-4.html"><img src="http://m.specialneedsforspecialkids.com/yun/data/avatar/000/00/00/small_000000004.jpg" alt=""><span id="bhx575x" class="layui-hide64">阿羅</span></a> <time datetime="">2019-08-20 18:25</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="prjbpz5" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://m.specialneedsforspecialkids.com/yun/81577.html"><b>[<em>譯</em> + 補(bǔ)充] Webpack 2 <em>入門</em></b></a></h2> <p class="ellipsis2 good">摘要:目錄許多開發(fā)者會把的目錄命名為但這並不強(qiáng)迫。所有的檔案都會使用從被編譯成。同時(shí)有個(gè)小小的重點(diǎn)那就是我們可已觀察編譯後的檔案大小。在專案目錄下執(zhí)行可以觀察截至目前為止的結(jié)果。我們的目標(biāo)是要把編譯封裝到我們的中。 在今時(shí)今日,webpack 已經(jīng)成為前端開發(fā)非常重要的工具之一。本質(zhì)上它是一個(gè) Javascript 模組封裝工具,但透過 loaders 和 plugins 它也可以轉(zhuǎn)換封裝其...</p> <div id="p7j575p" class="com_white-left-info"> <div id="7fvxp57" class="com_white-left-infol"> <a href="http://m.specialneedsforspecialkids.com/yun/u-1536.html"><img src="http://m.specialneedsforspecialkids.com/yun/data/avatar/000/00/15/small_000001536.jpg" alt=""><span id="nbfv5h7" class="layui-hide64">betacat</span></a> <time datetime="">2019-08-20 14:22</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="pptlptt" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://m.specialneedsforspecialkids.com/yun/115060.html"><b>[<em>譯</em>] CSS 載入機(jī)制的未來趨勢</b></a></h2> <p class="ellipsis2 good">摘要:載入流程被限制在兩個(gè)階段根據(jù)上面的模式,內(nèi)嵌透過隱藏尚未套用樣式的內(nèi)容,然後非同步得載入之後呈現(xiàn)內(nèi)容。樣式表本身的載入機(jī)制是平行的,但是套用樣式卻是要照順序的。我們需要一點(diǎn)小技巧來避免。 這週閱讀到這篇有意思的文章,於是便動(dòng)手寫下簡單的翻譯,如果有理解錯(cuò)誤的地方歡迎指教。 Chrome 正在試圖改變當(dāng) 寫在 的行為,從blink-dev 的文章並不能很清楚的知道其優(yōu)點(diǎn)。所以這篇文章...</p> <div id="nbrrjzl" class="com_white-left-info"> <div id="ndhjdpb" class="com_white-left-infol"> <a href="http://m.specialneedsforspecialkids.com/yun/u-1302.html"><img src="http://m.specialneedsforspecialkids.com/yun/data/avatar/000/00/13/small_000001302.jpg" alt=""><span id="rbjnh77" class="layui-hide64">Astrian</span></a> <time datetime="">2019-08-30 12:47</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="7jlbttf" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://m.specialneedsforspecialkids.com/yun/87432.html"><b>前端每周清單第 29 期:Web 現(xiàn)狀分析與優(yōu)化策略、Vue 單元測試、<em>Headless</em> Chrom</b></a></h2> <p class="ellipsis2 good">摘要:前端每周清單第期現(xiàn)狀分析與優(yōu)化策略單元測試爬蟲作者王下邀月熊編輯徐川前端每周清單專注前端領(lǐng)域內(nèi)容,以對外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點(diǎn)分為新聞熱點(diǎn)開發(fā)教程工程實(shí)踐深度閱讀開源項(xiàng)目巔峰人生等欄目。 showImg(https://segmentfault.com/img/remote/1460000011008022); 前端每周清單第 29 期:Web 現(xiàn)狀分析與優(yōu)化策略...</p> <div id="rhtxjjf" class="com_white-left-info"> <div id="jtxbd7b" class="com_white-left-infol"> <a href="http://m.specialneedsforspecialkids.com/yun/u-449.html"><img src="http://m.specialneedsforspecialkids.com/yun/data/avatar/000/00/04/small_000000449.jpg" alt=""><span id="ttlzppz" class="layui-hide64">HackerShell</span></a> <time datetime="">2019-08-21 12:05</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="lzdhl5p" class="topicone-box-wangeditor"> <h3 class="top-com-title mb-64"><span>發(fā)表評論</span></h3> <div id="tjxdjjr" class="xcp-publish-main flex_box_zd"> <div id="h7nh7v5" class="unlogin-pinglun-box"> <a href="javascript:login()" class="grad">登陸后可評論</a> </div> </div> </div> <div id="j7pv7h7" class="site-box-content"> <div id="njznrtt" class="site-content-title"> <h3 class="top-com-title mb-64"><span>0條評論</span></h3> </div> <div id="dphnr7z" class="pages"></ul></div> </div> </div> <div id="r7bfhhb" class="layui-col-md4 layui-col-lg3 com_white-right site-wrap-right"> <div id="zv77pbl" class=""> <div id="755rnx7" class="com_layuiright-box user-msgbox"> <a href="http://m.specialneedsforspecialkids.com/yun/u-156.html"><img src="http://m.specialneedsforspecialkids.com/yun/data/avatar/000/00/01/small_000000156.jpg" alt=""></a> <h3><a href="http://m.specialneedsforspecialkids.com/yun/u-156.html" rel="nofollow">toddmark</a></h3> <h6>男<span>|</span>高級講師</h6> <div id="dnr7pbn" class="flex_box_zd user-msgbox-atten"> <a href="javascript:attentto_user(156)" id="attenttouser_156" class="grad follow-btn notfollow attention">我要關(guān)注</a> <a href="javascript:login()" title="發(fā)私信" >我要私信</a> </div> <div id="v5vxpff" class="user-msgbox-list flex_box_zd"> <h3 class="hpf">TA的文章</h3> <a href="http://m.specialneedsforspecialkids.com/yun/ut-156.html" class="box_hxjz">閱讀更多</a> </div> <ul class="user-msgbox-ul"> <li><h3 class="ellipsis"><a href="http://m.specialneedsforspecialkids.com/yun/124397.html">OpenCV通道的分離和合并</a></h3> <p>閱讀 3221<span>·</span>2021-11-23 09:51</p></li> <li><h3 class="ellipsis"><a href="http://m.specialneedsforspecialkids.com/yun/120534.html">基于域名的虛擬主機(jī)是什么-什么是虛擬主機(jī)?</a></h3> <p>閱讀 3686<span>·</span>2021-09-22 15:35</p></li> <li><h3 class="ellipsis"><a href="http://m.specialneedsforspecialkids.com/yun/120005.html">【機(jī)器學(xué)習(xí)實(shí)戰(zhàn) Task1】 (KNN)k近鄰算法的應(yīng)用</a></h3> <p>閱讀 3660<span>·</span>2021-09-22 10:02</p></li> <li><h3 class="ellipsis"><a href="http://m.specialneedsforspecialkids.com/yun/118585.html">搬瓦工,DC2機(jī)房CN2 VPS匯總,電信雙程cn2 gt,聯(lián)通/移動(dòng)雙程直連</a></h3> <p>閱讀 2969<span>·</span>2021-08-30 09:49</p></li> <li><h3 class="ellipsis"><a href="http://m.specialneedsforspecialkids.com/yun/117989.html">FxTransit:$16/月/2核/1GB內(nèi)存/10GB SSD硬盤/2TB流量/500Mbps端</a></h3> <p>閱讀 529<span>·</span>2021-08-05 10:01</p></li> <li><h3 class="ellipsis"><a href="http://m.specialneedsforspecialkids.com/yun/116838.html">微信小程序隱藏客服按鈕,用圖片替代&增加提示卡片可隨時(shí)關(guān)閉。</a></h3> <p>閱讀 3395<span>·</span>2019-08-30 15:54</p></li> <li><h3 class="ellipsis"><a href="http://m.specialneedsforspecialkids.com/yun/116794.html">CSS3漸變效果工具</a></h3> <p>閱讀 1647<span>·</span>2019-08-30 15:53</p></li> <li><h3 class="ellipsis"><a href="http://m.specialneedsforspecialkids.com/yun/113756.html">前端每日實(shí)戰(zhàn):111# 視頻演示如何用純 CSS 創(chuàng)作一只藝術(shù)的鴨子</a></h3> <p>閱讀 3572<span>·</span>2019-08-29 16:27</p></li> </ul> </div> <!-- 文章詳情右側(cè)廣告--> <div id="lnrhnzl" class="com_layuiright-box"> <h6 class="top-com-title"><span>最新活動(dòng)</span></h6> <div id="bbh5t5l" class="com_adbox"> <div id="zlfzznb" 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="云服務(wù)器"> </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云服務(wù)器"> </a> </div> </div> </div> </div> <!-- banner結(jié)束 --> <div id="frhl57t" 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="jtxbfbb" class="site-tree-mobile layui-hide"> <i class="layui-icon layui-icon-spread-left"></i> </div> <!-- wap遮罩層 --> <div id="xxfvlz7" class="site-mobile-shade"></div> <!--付費(fèi)閱讀 --> <div class="vdvb7p5" id="payread"> <div id="bnfxdz7" class="layui-form-item">閱讀需要支付1元查看</div> <div id="jjxprd7" 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("復(fù)制代碼 ").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("復(fù)制成功") }); clipboard.on('error', function(e) { alert("復(fù)制失敗") }); } //$(".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:"付費(fèi)閱讀", shadeClose: true, content: $('#payread') }); } // 舉報(bào) 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("評論內(nèi)容不能為空"); 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("您已經(jīng)贊過"); } } }); }); function attenquestion(_tid,_rs){ $.ajax({ //提交數(shù)據(jù)的類型 POST GET type:"POST", //提交的網(wǎng)址 url:"http://m.specialneedsforspecialkids.com/yun/favorite/topicadd.html", //提交的數(shù)據(jù) data:{tid:_tid,rs:_rs}, //返回?cái)?shù)據(jù)的格式 datatype: "json",//"xml", "html", "script", "json", "jsonp", "text". //在請求之前調(diào)用的函數(shù) beforeSend:function(){}, //成功返回之后調(diào)用的函數(shù) 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) } } , //調(diào)用執(zhí)行后調(diào)用的函數(shù) complete: function(XMLHttpRequest, textStatus){ postadopt=true; }, //調(diào)用出錯(cuò)執(zhí)行的函數(shù) error: function(){ //請求出錯(cuò)處理 postadopt=false; } }); } </script> <footer> <div id="t7bptf5" class="layui-container"> <div id="lhvxp7x" class="flex_box_zd"> <div id="lx5dlxv" 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 (優(yōu)刻得科技股份有限公司)"></a></h6> <p>UCloud (優(yōu)刻得科技股份有限公司)是中立、安全的云計(jì)算服務(wù)平臺,堅(jiān)持中立,不涉足客戶業(yè)務(wù)領(lǐng)域。公司自主研發(fā)IaaS、PaaS、大數(shù)據(jù)流通平臺、AI服務(wù)平臺等一系列云計(jì)算產(chǎn)品,并深入了解互聯(lián)網(wǎng)、傳統(tǒng)企業(yè)在不同場景下的業(yè)務(wù)需求,提供公有云、混合云、私有云、專有云在內(nèi)的綜合性行業(yè)解決方案。</p> </div> <div id="xxzbf5t" class="right-footer layui-hidemd"> <ul class="flex_box_zd"> <li> <h6>UCloud與云服務(wù)</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" >行業(yè)解決方案</a></p> <p><a href="http://m.specialneedsforspecialkids.com/site/pro-notice/">產(chǎn)品動(dòng)態(tài)</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>社區(qū)欄目</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/" >新聞動(dòng)態(tài)</a></p> <p><a href="http://m.specialneedsforspecialkids.com/site/about/news/report/">媒體動(dòng)態(tài)</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="優(yōu)刻得"></span> <p>掃掃了解更多</p></div> </div> <div id="nzbdrnn" class="copyright">Copyright ? 2012-2023 UCloud 優(yōu)刻得科技股份有限公司<i>|</i><a rel="nofollow" >滬公網(wǎng)安備 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="7jhff" class="pl_css_ganrao" style="display: none;"><i id="7jhff"><nobr id="7jhff"><em id="7jhff"><meter id="7jhff"></meter></em></nobr></i><legend id="7jhff"><var id="7jhff"><form id="7jhff"><ins id="7jhff"></ins></form></var></legend><progress id="7jhff"><acronym id="7jhff"></acronym></progress><ins id="7jhff"><address id="7jhff"></address></ins><ins id="7jhff"><font id="7jhff"></font></ins><style id="7jhff"><nobr id="7jhff"></nobr></style><legend id="7jhff"><dfn id="7jhff"></dfn></legend><optgroup id="7jhff"><output id="7jhff"><thead id="7jhff"><big id="7jhff"></big></thead></output></optgroup><i id="7jhff"></i><var id="7jhff"><form id="7jhff"><ins id="7jhff"><address id="7jhff"></address></ins></form></var><span id="7jhff"><i id="7jhff"><listing id="7jhff"><dfn id="7jhff"></dfn></listing></i></span><sub id="7jhff"><thead id="7jhff"></thead></sub><output id="7jhff"><sub id="7jhff"></sub></output><nobr id="7jhff"><small id="7jhff"></small></nobr><dfn id="7jhff"></dfn><ruby id="7jhff"></ruby><video id="7jhff"><font id="7jhff"><legend id="7jhff"><ol id="7jhff"></ol></legend></font></video><progress id="7jhff"></progress><pre id="7jhff"><style id="7jhff"><nobr id="7jhff"><small id="7jhff"></small></nobr></style></pre><label id="7jhff"></label><listing id="7jhff"><dfn id="7jhff"></dfn></listing><div id="7jhff"><ol id="7jhff"></ol></div><progress id="7jhff"></progress><strike id="7jhff"></strike><nobr id="7jhff"><font id="7jhff"><div id="7jhff"><sup id="7jhff"></sup></div></font></nobr><strike id="7jhff"><listing id="7jhff"></listing></strike><style id="7jhff"><video id="7jhff"><em id="7jhff"><meter id="7jhff"></meter></em></video></style><meter id="7jhff"></meter><form id="7jhff"><rp id="7jhff"><font id="7jhff"><meter id="7jhff"></meter></font></rp></form><meter id="7jhff"><pre id="7jhff"></pre></meter><i id="7jhff"><nobr id="7jhff"><em id="7jhff"><output id="7jhff"></output></em></nobr></i><address id="7jhff"><legend id="7jhff"></legend></address><em id="7jhff"></em><tt id="7jhff"></tt><dl id="7jhff"><pre id="7jhff"></pre></dl><ruby id="7jhff"><thead id="7jhff"></thead></ruby><small id="7jhff"></small><label id="7jhff"></label><mark id="7jhff"><form id="7jhff"><legend id="7jhff"><var id="7jhff"></var></legend></form></mark><p id="7jhff"><var id="7jhff"></var></p><em id="7jhff"><div id="7jhff"><pre id="7jhff"><style id="7jhff"></style></pre></div></em><tt id="7jhff"><mark id="7jhff"><form id="7jhff"><legend id="7jhff"></legend></form></mark></tt><rp id="7jhff"></rp><rp id="7jhff"><font id="7jhff"></font></rp><dl id="7jhff"></dl><menuitem id="7jhff"></menuitem><ol id="7jhff"></ol><ins id="7jhff"></ins><meter id="7jhff"><pre id="7jhff"></pre></meter><b id="7jhff"><mark id="7jhff"><form id="7jhff"><legend id="7jhff"></legend></form></mark></b><sub id="7jhff"></sub><progress id="7jhff"></progress><output id="7jhff"><span id="7jhff"><progress id="7jhff"><strong id="7jhff"></strong></progress></span></output><b id="7jhff"><mark id="7jhff"><em id="7jhff"><legend id="7jhff"></legend></em></mark></b><strong id="7jhff"><track id="7jhff"></track></strong><listing id="7jhff"></listing><ol id="7jhff"><style id="7jhff"></style></ol><dfn id="7jhff"></dfn><mark id="7jhff"><form id="7jhff"></form></mark><track id="7jhff"><tt id="7jhff"><rp id="7jhff"><form id="7jhff"></form></rp></tt></track><optgroup id="7jhff"><ruby id="7jhff"><u id="7jhff"><mark id="7jhff"></mark></u></ruby></optgroup><ins id="7jhff"><form id="7jhff"><meter id="7jhff"><sup id="7jhff"></sup></meter></form></ins><small id="7jhff"></small><video id="7jhff"><em id="7jhff"></em></video><big id="7jhff"></big><span id="7jhff"></span><form id="7jhff"><p id="7jhff"><pre id="7jhff"><style id="7jhff"></style></pre></p></form><video id="7jhff"></video><address id="7jhff"><legend id="7jhff"></legend></address><div id="7jhff"><ol id="7jhff"><thead id="7jhff"><listing id="7jhff"></listing></thead></ol></div><style id="7jhff"><nobr id="7jhff"><optgroup id="7jhff"><output id="7jhff"></output></optgroup></nobr></style><dl id="7jhff"><pre id="7jhff"></pre></dl><output id="7jhff"><sub id="7jhff"><mark id="7jhff"><acronym id="7jhff"></acronym></mark></sub></output><p id="7jhff"><var id="7jhff"></var></p><ol id="7jhff"></ol><em id="7jhff"><meter id="7jhff"><thead id="7jhff"><thead id="7jhff"></thead></thead></meter></em><ruby id="7jhff"><thead id="7jhff"></thead></ruby><i id="7jhff"><nobr id="7jhff"><pre id="7jhff"><output id="7jhff"></output></pre></nobr></i><form id="7jhff"><legend id="7jhff"><ol id="7jhff"><form id="7jhff"></form></ol></legend></form><p id="7jhff"><var id="7jhff"></var></p><small id="7jhff"><menuitem id="7jhff"></menuitem></small><p id="7jhff"><sup id="7jhff"></sup></p><u id="7jhff"></u><sup id="7jhff"><label id="7jhff"><strong id="7jhff"><em id="7jhff"></em></strong></label></sup><var id="7jhff"></var><acronym id="7jhff"><legend id="7jhff"><sup id="7jhff"><u id="7jhff"></u></sup></legend></acronym><dfn id="7jhff"><b id="7jhff"><video id="7jhff"><font id="7jhff"></font></video></b></dfn><sub id="7jhff"><big id="7jhff"><form id="7jhff"><pre id="7jhff"></pre></form></big></sub><listing id="7jhff"><dfn id="7jhff"></dfn></listing><pre id="7jhff"><th id="7jhff"></th></pre><big id="7jhff"></big><optgroup id="7jhff"></optgroup><dfn id="7jhff"><u id="7jhff"></u></dfn><form id="7jhff"></form><progress id="7jhff"></progress><font id="7jhff"></font><form id="7jhff"><pre id="7jhff"><th id="7jhff"><u id="7jhff"></u></th></pre></form><small id="7jhff"></small><output id="7jhff"><sub id="7jhff"></sub></output><style id="7jhff"><video id="7jhff"><optgroup id="7jhff"><output id="7jhff"></output></optgroup></video></style><track id="7jhff"></track><label id="7jhff"></label><form id="7jhff"></form><i id="7jhff"><listing id="7jhff"><small id="7jhff"><menuitem id="7jhff"></menuitem></small></listing></i><strong id="7jhff"></strong><var id="7jhff"><form id="7jhff"></form></var><pre id="7jhff"><i id="7jhff"><listing id="7jhff"><dfn id="7jhff"></dfn></listing></i></pre><form id="7jhff"></form><em id="7jhff"></em><dl id="7jhff"><pre id="7jhff"></pre></dl><tt id="7jhff"><progress id="7jhff"><acronym id="7jhff"><legend id="7jhff"></legend></acronym></progress></tt><p id="7jhff"></p><strike id="7jhff"><strong id="7jhff"></strong></strike><ol id="7jhff"><style id="7jhff"></style></ol><strong id="7jhff"><track id="7jhff"><tt id="7jhff"><progress id="7jhff"></progress></tt></track></strong><strike id="7jhff"><strong id="7jhff"></strong></strike><mark id="7jhff"><form id="7jhff"></form></mark><progress id="7jhff"><dl id="7jhff"><legend id="7jhff"><dfn id="7jhff"></dfn></legend></dl></progress><form id="7jhff"></form><pre id="7jhff"><dfn id="7jhff"></dfn></pre><form id="7jhff"><rp id="7jhff"></rp></form><i id="7jhff"><nobr id="7jhff"><dfn id="7jhff"><output id="7jhff"></output></dfn></nobr></i><strong id="7jhff"><optgroup id="7jhff"><ruby id="7jhff"><tt id="7jhff"></tt></ruby></optgroup></strong><address id="7jhff"><legend id="7jhff"></legend></address><form id="7jhff"><p id="7jhff"><var id="7jhff"><form id="7jhff"></form></var></p></form><small id="7jhff"></small><optgroup id="7jhff"><output id="7jhff"></output></optgroup><div id="7jhff"></div><tt id="7jhff"></tt><ruby id="7jhff"></ruby><sub id="7jhff"><thead id="7jhff"></thead></sub><ins id="7jhff"></ins><legend id="7jhff"></legend><dl id="7jhff"></dl><form id="7jhff"><rp id="7jhff"><address id="7jhff"><legend id="7jhff"></legend></address></rp></form><dl id="7jhff"><pre id="7jhff"></pre></dl><address id="7jhff"><p id="7jhff"></p></address><font id="7jhff"><div id="7jhff"><sup id="7jhff"><style id="7jhff"></style></sup></div></font><em id="7jhff"></em><rp id="7jhff"></rp><b id="7jhff"><progress id="7jhff"></progress></b><progress id="7jhff"><acronym id="7jhff"></acronym></progress><sup id="7jhff"><label id="7jhff"></label></sup><acronym id="7jhff"><legend id="7jhff"></legend></acronym><style id="7jhff"></style><strong id="7jhff"><optgroup id="7jhff"><output id="7jhff"><thead id="7jhff"></thead></output></optgroup></strong><pre id="7jhff"><style id="7jhff"></style></pre><u id="7jhff"></u><b id="7jhff"><mark id="7jhff"></mark></b><thead id="7jhff"><big id="7jhff"><dl id="7jhff"><legend id="7jhff"></legend></dl></big></thead></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>