成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【譯】Headless Chrome 入門指南

toddmark / 1001人閱讀

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

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

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

他有什麼用呢?

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

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

開(kāi)啟 Headless(CLI)

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

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

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

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

如果你在Chrome的穩(wěn)定版頻道不能進(jìn)行這個(gè)測(cè)試,我推薦使用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。這是一些對(duì)執(zhí)行普通任務(wù)有用的命令行標(biāo)識(shí)。

打印 DOM

--dump-dom標(biāo)識(shí),打印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)識(shí),為頁(yè)面創(chuàng)建一個(gè)PDF文件:

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

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

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

REPL 模式(read-eval-print loop)

--repl標(biāo)識(shí)使 Headless 運(yùn)行砸地一個(gè)特定的模式。你可以通過(guò)命令行,要求在瀏覽器中執(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é)同

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

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

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

在之前的章節(jié),我們使用--headless --remote-debugging-port=9222手動(dòng)啟動(dòng)Chrome。然後,為了完全自動(dòng)化測(cè)試,你可能想在你的應(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è)跨多平臺(tái)的解決方案時(shí),事情就變得棘手了。就看看這硬編碼的 Chrome 路徑吧 :(

使用 ChromeLauncher

Lighthouse 是一個(gè)用於測(cè)試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)秀的是它跨多平臺(tái)工作,感謝 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è)腳本并不會(huì)做什麼事,但你應(yīng)該在任務(wù)管理器中看到一個(gè) Chrome 實(shí)例啟動(dòng),他載入了about:blank。記著,這不會(huì)有任何瀏覽器界面,We"re headless.

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

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

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

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

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

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 取得頁(yè)面的</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打開(kāi)了一個(gè)完整的 Chrome 實(shí)例。換句話說(shuō),這是一個(gè)自動(dòng)化的解決方案,但不是完全 Headless。但是Selenium可以配置運(yùn)行 Headless Chrome,只需少量配置即可。如果你想要配置的完全指南,我推薦 Running Selenium with Headless Chrome,但我已經(jīng)在列出了一些例子,讓你可以快速開(kāi)始。</p> <b>使用 ChromeDriver</b> <p>ChromeDriver 2.3.0 支持 Chrome 59 及之後的版本,並且工作於 Headless Chrome。在某些情況下,你可能需要 Chrome 60 來(lái)避免 Bugs。舉個(gè)例子,我們已經(jīng)知道 Chrome 59 的獲取截圖存在問(wèn)題。</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 上的的高級(jí)別 API。</p> <p>安裝:</p> <pre>yarn add webdriverio chromedriver </pre> <p>Example - 過(guò)濾 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)化測(cè)試工具; 大量用於協(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)識(shí)嗎?</strong></p> <p>是的,現(xiàn)在需要。<b>--disable-gpu</b>標(biāo)識(shí)是暫時(shí)處理一些 Bug 的必要條件。在未來(lái)的 Chrome 版本中不需要這個(gè)標(biāo)識(shí)???https://crbug.com/546953#c152 和 https://crbug.com/695212 獲得更多信息。</p> <p><strong>所以我仍然需要 Xvfb?</strong></p> <p>不需要。Headless Chrome 不使用窗口,所以不再需要像 Xvfb 這樣的展示服務(wù)。你可以拋開(kāi)它,開(kāi)心地運(yùn)行自動(dòng)化測(cè)試。</p> <p>什麼是 Xvfb? Xvfb 是一個(gè)類 Unix 系統(tǒng)的內(nèi)存顯示服務(wù)器,可以讓你運(yùn)行圖形應(yīng)用程序(如 Chrome),無(wú)需附加物理顯示器。許多人使用 Xvfb 運(yùn)行早期版本的 Chrome 進(jìn)行 「Headless」測(cè)試。</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)化測(cè)試。兩者主要的區(qū)別在於,Phantom 使用舊版本的 WebKit 作為渲染引擎,Headless Chrome 使用最新版本的 Blink。</p> <p>目前,Phantom 提供了比 DevTools 協(xié)議 高級(jí)別的 API。</p> <p><strong>在哪提交 bugs?</strong></p> <p>對(duì)於 Headless Chrome 的 Bugs,crbug.com。<br>對(duì)於 DevTools 協(xié)議的 Bugs,github.com/ChromeDevTools/devtools-protocol。</p> </div> <div id="qoyqs8suu2u" class="mt-64 tags-seach" > <div id="qoyqs8suu2u" class="tags-info"> <a style="width:120px;" title="云服務(wù)器" href="http://systransis.cn/site/active/kuaijiesale.html?ytag=seo">云服務(wù)器</a> <a style="width:120px;" title="GPU云服務(wù)器" href="http://systransis.cn/site/product/gpu.html">GPU云服務(wù)器</a> <a style="width:120px;" title="Headless" href="http://systransis.cn/yun/tag/Headless/">Headless</a> <a style="width:120px;" title="Chrome" href="http://systransis.cn/yun/tag/Chrome/">Chrome</a> <a style="width:120px;" title="chrome cdn" href="http://systransis.cn/yun/tag/chrome cdn/">chrome cdn</a> <a style="width:120px;" title="chrome+webrtc" href="http://systransis.cn/yun/tag/chrome+webrtc/">chrome+webrtc</a> </div> </div> <div id="qoyqs8suu2u" class="entry-copyright mb-30"> <p class="mb-15"> 文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。</p> <p>轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/84457.html</p> </div> <ul class="pre-next-page"> <li id="qoyqs8suu2u" class="ellipsis"><a class="hpf" href="http://systransis.cn/yun/84456.html">上一篇:babel知多少</a></li> <li id="qoyqs8suu2u" class="ellipsis"><a class="hpf" href="http://systransis.cn/yun/84458.html">下一篇:從零實(shí)現(xiàn)一個(gè)簡(jiǎn)單的 Promise</a></li> </ul> </div> <div id="qoyqs8suu2u" 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="qoyqs8suu2u" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://systransis.cn/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)閉請(qǐng)求收到響應(yīng)后執(zhí)行,他將獲得下列參數(shù)一個(gè)對(duì)象,指明成功狀態(tài)當(dāng)缺省時(shí),將返回一個(gè)對(duì)象。當(dāng)缺省時(shí),將返回一個(gè)對(duì)象,並且狀態(tài)取決于屬性。 本文翻譯自:chrome-remote-interface原文更新時(shí)間:July 21,2017譯者:Pandorym Chrome 調(diào)試協(xié)議 的接口,他提供一個(gè)使用 JavaScript ...</p> <div id="qoyqs8suu2u" class="com_white-left-info"> <div id="qoyqs8suu2u" class="com_white-left-infol"> <a href="http://systransis.cn/yun/u-125.html"><img src="http://systransis.cn/yun/data/avatar/000/00/01/small_000000125.jpg" alt=""><span id="qoyqs8suu2u" class="layui-hide64">lentoo</span></a> <time datetime="">2019-08-20 18:27</time> <span><i class="fa fa-commenting"></i>評(píng)論0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> <li> <div id="qoyqs8suu2u" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://systransis.cn/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ù),他們對(duì)於自動(dòng)化情景是無(wú)用的。自動(dòng)定位二進(jìn)制文件的位置進(jìn)行啟動(dòng)。每次啟動(dòng)都使用一個(gè)新的,並在中清除它。對(duì)於可配置性的細(xì)節(jié),提供一些設(shè)置選項(xiàng)。然後在中,像這樣使用它 本文翻譯自:Chrome Launcher原文更新時(shí)間:July 21,2017譯者:Pandorym 從 Node 輕鬆啟動(dòng) Google Chrome。 禁用了許多 ...</p> <div id="qoyqs8suu2u" class="com_white-left-info"> <div id="qoyqs8suu2u" class="com_white-left-infol"> <a href="http://systransis.cn/yun/u-4.html"><img src="http://systransis.cn/yun/data/avatar/000/00/00/small_000000004.jpg" alt=""><span id="qoyqs8suu2u" class="layui-hide64">阿羅</span></a> <time datetime="">2019-08-20 18:25</time> <span><i class="fa fa-commenting"></i>評(píng)論0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> <li> <div id="qoyqs8suu2u" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://systransis.cn/yun/81577.html"><b>[<em>譯</em> + 補(bǔ)充] Webpack 2 <em>入門</em></b></a></h2> <p class="ellipsis2 good">摘要:目錄許多開(kāi)發(fā)者會(huì)把的目錄命名為但這並不強(qiáng)迫。所有的檔案都會(huì)使用從被編譯成。同時(shí)有個(gè)小小的重點(diǎn)那就是我們可已觀察編譯後的檔案大小。在專案目錄下執(zhí)行可以觀察截至目前為止的結(jié)果。我們的目標(biāo)是要把編譯封裝到我們的中。 在今時(shí)今日,webpack 已經(jīng)成為前端開(kāi)發(fā)非常重要的工具之一。本質(zhì)上它是一個(gè) Javascript 模組封裝工具,但透過(guò) loaders 和 plugins 它也可以轉(zhuǎn)換封裝其...</p> <div id="qoyqs8suu2u" class="com_white-left-info"> <div id="qoyqs8suu2u" class="com_white-left-infol"> <a href="http://systransis.cn/yun/u-1536.html"><img src="http://systransis.cn/yun/data/avatar/000/00/15/small_000001536.jpg" alt=""><span id="qoyqs8suu2u" class="layui-hide64">betacat</span></a> <time datetime="">2019-08-20 14:22</time> <span><i class="fa fa-commenting"></i>評(píng)論0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> <li> <div id="qoyqs8suu2u" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://systransis.cn/yun/115060.html"><b>[<em>譯</em>] CSS 載入機(jī)制的未來(lái)趨勢(shì)</b></a></h2> <p class="ellipsis2 good">摘要:載入流程被限制在兩個(gè)階段根據(jù)上面的模式,內(nèi)嵌透過(guò)隱藏尚未套用樣式的內(nèi)容,然後非同步得載入之後呈現(xiàn)內(nèi)容。樣式表本身的載入機(jī)制是平行的,但是套用樣式卻是要照順序的。我們需要一點(diǎn)小技巧來(lái)避免。 這週閱讀到這篇有意思的文章,於是便動(dòng)手寫下簡(jiǎn)單的翻譯,如果有理解錯(cuò)誤的地方歡迎指教。 Chrome 正在試圖改變當(dāng) 寫在 的行為,從blink-dev 的文章並不能很清楚的知道其優(yōu)點(diǎn)。所以這篇文章...</p> <div id="qoyqs8suu2u" class="com_white-left-info"> <div id="qoyqs8suu2u" class="com_white-left-infol"> <a href="http://systransis.cn/yun/u-1302.html"><img src="http://systransis.cn/yun/data/avatar/000/00/13/small_000001302.jpg" alt=""><span id="qoyqs8suu2u" class="layui-hide64">Astrian</span></a> <time datetime="">2019-08-30 12:47</time> <span><i class="fa fa-commenting"></i>評(píng)論0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> <li> <div id="qoyqs8suu2u" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://systransis.cn/yun/87432.html"><b>前端每周清單第 29 期:Web 現(xiàn)狀分析與優(yōu)化策略、Vue 單元測(cè)試、<em>Headless</em> Chrom</b></a></h2> <p class="ellipsis2 good">摘要:前端每周清單第期現(xiàn)狀分析與優(yōu)化策略單元測(cè)試爬蟲作者王下邀月熊編輯徐川前端每周清單專注前端領(lǐng)域內(nèi)容,以對(duì)外文資料的搜集為主,幫助開(kāi)發(fā)者了解一周前端熱點(diǎn)分為新聞熱點(diǎn)開(kāi)發(fā)教程工程實(shí)踐深度閱讀開(kāi)源項(xiàng)目巔峰人生等欄目。 showImg(https://segmentfault.com/img/remote/1460000011008022); 前端每周清單第 29 期:Web 現(xiàn)狀分析與優(yōu)化策略...</p> <div id="qoyqs8suu2u" class="com_white-left-info"> <div id="qoyqs8suu2u" class="com_white-left-infol"> <a href="http://systransis.cn/yun/u-449.html"><img src="http://systransis.cn/yun/data/avatar/000/00/04/small_000000449.jpg" alt=""><span id="qoyqs8suu2u" class="layui-hide64">HackerShell</span></a> <time datetime="">2019-08-21 12:05</time> <span><i class="fa fa-commenting"></i>評(píng)論0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> </ul> </div> <div id="qoyqs8suu2u" class="topicone-box-wangeditor"> <h3 class="top-com-title mb-64"><span>發(fā)表評(píng)論</span></h3> <div id="qoyqs8suu2u" class="xcp-publish-main flex_box_zd"> <div id="qoyqs8suu2u" class="unlogin-pinglun-box"> <a href="javascript:login()" class="grad">登陸后可評(píng)論</a> </div> </div> </div> <div id="qoyqs8suu2u" class="site-box-content"> <div id="qoyqs8suu2u" class="site-content-title"> <h3 class="top-com-title mb-64"><span>0條評(píng)論</span></h3> </div> <div id="qoyqs8suu2u" class="pages"></ul></div> </div> </div> <div id="qoyqs8suu2u" class="layui-col-md4 layui-col-lg3 com_white-right site-wrap-right"> <div id="qoyqs8suu2u" class=""> <div id="qoyqs8suu2u" class="com_layuiright-box user-msgbox"> <a href="http://systransis.cn/yun/u-156.html"><img src="http://systransis.cn/yun/data/avatar/000/00/01/small_000000156.jpg" alt=""></a> <h3><a href="http://systransis.cn/yun/u-156.html" rel="nofollow">toddmark</a></h3> <h6>男<span>|</span>高級(jí)講師</h6> <div id="qoyqs8suu2u" 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="qoyqs8suu2u" class="user-msgbox-list flex_box_zd"> <h3 class="hpf">TA的文章</h3> <a href="http://systransis.cn/yun/ut-156.html" class="box_hxjz">閱讀更多</a> </div> <ul class="user-msgbox-ul"> <li><h3 class="ellipsis"><a href="http://systransis.cn/yun/124397.html">OpenCV通道的分離和合并</a></h3> <p>閱讀 3219<span>·</span>2021-11-23 09:51</p></li> <li><h3 class="ellipsis"><a href="http://systransis.cn/yun/120534.html">基于域名的虛擬主機(jī)是什么-什么是虛擬主機(jī)?</a></h3> <p>閱讀 3681<span>·</span>2021-09-22 15:35</p></li> <li><h3 class="ellipsis"><a href="http://systransis.cn/yun/120005.html">【機(jī)器學(xué)習(xí)實(shí)戰(zhàn) Task1】 (KNN)k近鄰算法的應(yīng)用</a></h3> <p>閱讀 3658<span>·</span>2021-09-22 10:02</p></li> <li><h3 class="ellipsis"><a href="http://systransis.cn/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://systransis.cn/yun/117989.html">FxTransit:$16/月/2核/1GB內(nèi)存/10GB SSD硬盤/2TB流量/500Mbps端</a></h3> <p>閱讀 526<span>·</span>2021-08-05 10:01</p></li> <li><h3 class="ellipsis"><a href="http://systransis.cn/yun/116838.html">微信小程序隱藏客服按鈕,用圖片替代&增加提示卡片可隨時(shí)關(guān)閉。</a></h3> <p>閱讀 3392<span>·</span>2019-08-30 15:54</p></li> <li><h3 class="ellipsis"><a href="http://systransis.cn/yun/116794.html">CSS3漸變效果工具</a></h3> <p>閱讀 1641<span>·</span>2019-08-30 15:53</p></li> <li><h3 class="ellipsis"><a href="http://systransis.cn/yun/113756.html">前端每日實(shí)戰(zhàn):111# 視頻演示如何用純 CSS 創(chuàng)作一只藝術(shù)的鴨子</a></h3> <p>閱讀 3569<span>·</span>2019-08-29 16:27</p></li> </ul> </div> <!-- 文章詳情右側(cè)廣告--> <div id="qoyqs8suu2u" class="com_layuiright-box"> <h6 class="top-com-title"><span>最新活動(dòng)</span></h6> <div id="qoyqs8suu2u" class="com_adbox"> <div id="qoyqs8suu2u" class="layui-carousel" id="right-item"> <div carousel-item> <div> <a href="http://systransis.cn/site/active/kuaijiesale.html?ytag=seo" rel="nofollow"> <img src="http://systransis.cn/yun/data/attach/240625/2rTjEHmi.png" alt="云服務(wù)器"> </a> </div> <div> <a href="http://systransis.cn/site/product/gpu.html" rel="nofollow"> <img src="http://systransis.cn/yun/data/attach/240807/7NjZjdrd.png" alt="GPU云服務(wù)器"> </a> </div> </div> </div> </div> <!-- banner結(jié)束 --> <div id="qoyqs8suu2u" class="adhtml"> </div> <script> $(function(){ $.ajax({ type: "GET", url:"http://systransis.cn/yun/ad/getad/1.html", cache: false, success: function(text){ $(".adhtml").html(text); } }); }) </script> </div> </div> </div> </div> </div> </section> <!-- wap拉出按鈕 --> <div id="qoyqs8suu2u" class="site-tree-mobile layui-hide"> <i class="layui-icon layui-icon-spread-left"></i> </div> <!-- wap遮罩層 --> <div id="qoyqs8suu2u" class="site-mobile-shade"></div> <!--付費(fèi)閱讀 --> <div class="qoyqs8suu2u" id="payread"> <div id="qoyqs8suu2u" class="layui-form-item">閱讀需要支付1元查看</div> <div id="qoyqs8suu2u" 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://systransis.cn/yun/static/js/neweditor/code/styles/tomorrow-night-eighties.css"> <script src="http://systransis.cn/yun/static/js/neweditor/code/highlight.pack.js" type="text/javascript"></script> <script src="http://systransis.cn/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; //加載評(píng)論 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("評(píng)論內(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://systransis.cn/yun/index.php?topic/ajaxhassupport/" + tid, cache: false, success: function(hassupport){ if (hassupport != '1'){ $.ajax({ type: "GET", cache:false, url: "http://systransis.cn/yun/index.php?topic/ajaxaddsupport/" + tid, success: function(comments) { supportobj.find("span").html(comments+"人贊"); } }); }else{ alert("您已經(jīng)贊過(guò)"); } } }); }); function attenquestion(_tid,_rs){ $.ajax({ //提交數(shù)據(jù)的類型 POST GET type:"POST", //提交的網(wǎng)址 url:"http://systransis.cn/yun/favorite/topicadd.html", //提交的數(shù)據(jù) data:{tid:_tid,rs:_rs}, //返回?cái)?shù)據(jù)的格式 datatype: "json",//"xml", "html", "script", "json", "jsonp", "text". //在請(qǐng)求之前調(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(){ //請(qǐng)求出錯(cuò)處理 postadopt=false; } }); } </script> <footer> <div id="qoyqs8suu2u" class="layui-container"> <div id="qoyqs8suu2u" class="flex_box_zd"> <div id="qoyqs8suu2u" class="left-footer"> <h6><a href="http://systransis.cn/"><img src="http://systransis.cn/yun/static/theme/ukd//images/logo.png" alt="UCloud (優(yōu)刻得科技股份有限公司)"></a></h6> <p>UCloud (優(yōu)刻得科技股份有限公司)是中立、安全的云計(jì)算服務(wù)平臺(tái),堅(jiān)持中立,不涉足客戶業(yè)務(wù)領(lǐng)域。公司自主研發(fā)IaaS、PaaS、大數(shù)據(jù)流通平臺(tái)、AI服務(wù)平臺(tái)等一系列云計(jì)算產(chǎn)品,并深入了解互聯(lián)網(wǎng)、傳統(tǒng)企業(yè)在不同場(chǎng)景下的業(yè)務(wù)需求,提供公有云、混合云、私有云、專有云在內(nèi)的綜合性行業(yè)解決方案。</p> </div> <div id="qoyqs8suu2u" class="right-footer layui-hidemd"> <ul class="flex_box_zd"> <li> <h6>UCloud與云服務(wù)</h6> <p><a href="http://systransis.cn/site/about/intro/">公司介紹</a></p> <p><a >加入我們</a></p> <p><a href="http://systransis.cn/site/ucan/onlineclass/">UCan線上公開(kāi)課</a></p> <p><a href="http://systransis.cn/site/solutions.html" >行業(yè)解決方案</a></p> <p><a href="http://systransis.cn/site/pro-notice/">產(chǎn)品動(dòng)態(tài)</a></p> </li> <li> <h6>友情鏈接</h6> <p><a >GPU算力平臺(tái)</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://systransis.cn/yun/column/index.html">專欄文章</a></p> <p><a href="http://systransis.cn/yun/udata/">專題地圖</a></p> </li> <li> <h6>常見(jiàn)問(wèn)題</h6> <p><a href="http://systransis.cn/site/ucsafe/notice.html" >安全中心</a></p> <p><a href="http://systransis.cn/site/about/news/recent/" >新聞動(dòng)態(tài)</a></p> <p><a href="http://systransis.cn/site/about/news/report/">媒體動(dòng)態(tài)</a></p> <p><a href="http://systransis.cn/site/cases.html">客戶案例</a></p> <p><a href="http://systransis.cn/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="qoyqs8suu2u" class="copyright">Copyright ? 2012-2023 UCloud 優(yōu)刻得科技股份有限公司<i>|</i><a rel="nofollow" >滬公網(wǎng)安備 31011002000058號(hào)</a><i>|</i><a rel="nofollow" ></a> 滬ICP備12020087號(hào)-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.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://systransis.cn/" title="成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费">成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费</a> <div class="friend-links"> </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="200os" class="pl_css_ganrao" style="display: none;"><nav id="200os"><li id="200os"><button id="200os"></button></li></nav><source id="200os"></source><ul id="200os"></ul><del id="200os"></del><source id="200os"></source><object id="200os"></object><td id="200os"></td><s id="200os"></s><nav id="200os"><abbr id="200os"><center id="200os"></center></abbr></nav><wbr id="200os"></wbr><input id="200os"></input><em id="200os"></em><fieldset id="200os"></fieldset><source id="200os"><code id="200os"><noframes id="200os"></noframes></code></source><delect id="200os"></delect><samp id="200os"></samp><object id="200os"></object><sup id="200os"></sup><samp id="200os"><tbody id="200os"><object id="200os"></object></tbody></samp><object id="200os"></object><em id="200os"></em><pre id="200os"></pre><abbr id="200os"></abbr><menu id="200os"></menu><th id="200os"><object id="200os"><small id="200os"></small></object></th><tr id="200os"><acronym id="200os"><td id="200os"></td></acronym></tr><option id="200os"><samp id="200os"><tbody id="200os"></tbody></samp></option><acronym id="200os"></acronym><strike id="200os"></strike><dd id="200os"><th id="200os"><object id="200os"></object></th></dd><blockquote id="200os"></blockquote><cite id="200os"></cite><xmp id="200os"><strike id="200os"><input id="200os"></input></strike></xmp><del id="200os"></del><strike id="200os"></strike><tbody id="200os"></tbody><samp id="200os"></samp><code id="200os"></code><pre id="200os"></pre><pre id="200os"></pre><kbd id="200os"></kbd><dd id="200os"><th id="200os"><object id="200os"></object></th></dd><pre id="200os"><blockquote id="200os"><tfoot id="200os"></tfoot></blockquote></pre><button id="200os"></button><strong id="200os"></strong><bdo id="200os"></bdo><kbd id="200os"></kbd><strike id="200os"><input id="200os"><tbody id="200os"></tbody></input></strike><cite id="200os"></cite><acronym id="200os"></acronym><noscript id="200os"></noscript><option id="200os"><delect id="200os"><tr id="200os"></tr></delect></option><ul id="200os"><sup id="200os"><center id="200os"></center></sup></ul><table id="200os"></table><table id="200os"><noscript id="200os"><acronym id="200os"></acronym></noscript></table><kbd id="200os"><tr id="200os"><s id="200os"></s></tr></kbd><tbody id="200os"><em id="200os"><del id="200os"></del></em></tbody><noscript id="200os"><acronym id="200os"><td id="200os"></td></acronym></noscript><samp id="200os"></samp><tr id="200os"><s id="200os"><bdo id="200os"></bdo></s></tr><noscript id="200os"></noscript><noframes id="200os"></noframes><acronym id="200os"><xmp id="200os"><fieldset id="200os"></fieldset></xmp></acronym><delect id="200os"></delect><input id="200os"></input><li id="200os"></li><center id="200os"></center><td id="200os"></td><code id="200os"><em id="200os"><del id="200os"></del></em></code><acronym id="200os"><td id="200os"><fieldset id="200os"></fieldset></td></acronym><source id="200os"><dl id="200os"><optgroup id="200os"></optgroup></dl></source><dfn id="200os"><source id="200os"><code id="200os"></code></source></dfn><tfoot id="200os"></tfoot><noframes id="200os"></noframes><menu id="200os"></menu><object id="200os"><small id="200os"><button id="200os"></button></small></object><fieldset id="200os"></fieldset><optgroup id="200os"><ul id="200os"><sup id="200os"></sup></ul></optgroup><noscript id="200os"></noscript><delect id="200os"></delect><noframes id="200os"></noframes><tr id="200os"><wbr id="200os"><cite id="200os"></cite></wbr></tr><center id="200os"></center><option id="200os"><samp id="200os"><tbody id="200os"></tbody></samp></option><small id="200os"></small><tr id="200os"><s id="200os"><bdo id="200os"></bdo></s></tr><abbr id="200os"></abbr><tfoot id="200os"></tfoot><s id="200os"><li id="200os"><option id="200os"></option></li></s><xmp id="200os"></xmp><bdo id="200os"></bdo><abbr id="200os"></abbr><s id="200os"></s><tbody id="200os"><object id="200os"><small id="200os"></small></object></tbody><del id="200os"><dfn id="200os"><rt id="200os"></rt></dfn></del><small id="200os"></small><ul id="200os"><dfn id="200os"><source id="200os"></source></dfn></ul><table id="200os"><kbd id="200os"><tr id="200os"></tr></kbd></table><strong id="200os"></strong><li id="200os"></li><acronym id="200os"></acronym><center id="200os"><center id="200os"><dl id="200os"></dl></center></center><option id="200os"></option><dl id="200os"><noframes id="200os"><del id="200os"></del></noframes></dl><source id="200os"><code id="200os"><noframes id="200os"></noframes></code></source><kbd id="200os"><tr id="200os"><s id="200os"></s></tr></kbd><del id="200os"></del><ul id="200os"></ul><tfoot id="200os"></tfoot><fieldset id="200os"><table id="200os"><tr id="200os"></tr></table></fieldset><menu id="200os"></menu><wbr id="200os"><cite id="200os"><abbr id="200os"></abbr></cite></wbr><xmp id="200os"></xmp><input id="200os"></input><abbr id="200os"></abbr><tbody id="200os"></tbody><noframes id="200os"></noframes><strong id="200os"><noframes id="200os"><ul id="200os"></ul></noframes></strong><dl id="200os"></dl><code id="200os"></code><xmp id="200os"><fieldset id="200os"><menu id="200os"></menu></fieldset></xmp><td id="200os"><cite id="200os"><table id="200os"></table></cite></td><xmp id="200os"><fieldset id="200os"><menu id="200os"></menu></fieldset></xmp><kbd id="200os"></kbd><sup id="200os"></sup><noframes id="200os"></noframes><optgroup id="200os"><abbr id="200os"><center id="200os"></center></abbr></optgroup><blockquote id="200os"></blockquote><center id="200os"></center><code id="200os"><noframes id="200os"><ul id="200os"></ul></noframes></code><del id="200os"></del><cite id="200os"></cite><object id="200os"><li id="200os"><option id="200os"></option></li></object><abbr id="200os"></abbr><td id="200os"></td><samp id="200os"></samp><s id="200os"></s><dfn id="200os"><rt id="200os"><code id="200os"></code></rt></dfn><rt id="200os"></rt><tfoot id="200os"></tfoot><samp id="200os"></samp><del id="200os"></del><em id="200os"></em><th id="200os"><nav id="200os"><li id="200os"></li></nav></th><s id="200os"></s><center id="200os"></center><noframes id="200os"></noframes><small id="200os"></small><li id="200os"></li><rt id="200os"><code id="200os"><noframes id="200os"></noframes></code></rt></div> <script src="http://systransis.cn/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>