国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

幾個(gè)常見(jiàn)面試題,工作中也經(jīng)常用到

共 8766字,需瀏覽 18分鐘

 ·

2020-07-30 21:10

?

01 什么是防抖和節(jié)流,他們的應(yīng)用場(chǎng)景有哪些

?

在 Issue 中交流與討論: 01 什么是防抖和節(jié)流,他們的應(yīng)用場(chǎng)景有哪些[1]

?

防抖 (debounce)

防抖,顧名思義,防止抖動(dòng),以免把一次事件誤認(rèn)為多次,敲鍵盤(pán)就是一個(gè)每天都會(huì)接觸到的防抖操作。

想要了解一個(gè)概念,必先了解概念所應(yīng)用的場(chǎng)景。在 JS 這個(gè)世界中,有哪些防抖的場(chǎng)景呢

  1. 登錄、發(fā)短信等按鈕避免用戶點(diǎn)擊太快,以致于發(fā)送了多次請(qǐng)求,需要防抖
  2. 調(diào)整瀏覽器窗口大小時(shí),resize 次數(shù)過(guò)于頻繁,造成計(jì)算過(guò)多,此時(shí)需要一次到位,就用到了防抖
  3. 文本編輯器實(shí)時(shí)保存,當(dāng)無(wú)任何更改操作一秒后進(jìn)行保存

代碼如下,可以看出來(lái)「防抖重在清零?clearTimeout(timer)

function?debounce?(f,?wait)?{
??let?timer
??return?(...args)?=>?{
????clearTimeout(timer)
????timer?=?setTimeout(()?=>?{
??????f(...args)
????},?wait)
??}
}

節(jié)流 (throttle)

節(jié)流,顧名思義,控制水的流量。控制事件發(fā)生的頻率,如控制為 1s 發(fā)生一次,甚至 1 分鐘發(fā)生一次。與服務(wù)端(server)及網(wǎng)關(guān)(gateway)控制的限流 (Rate Limit) 類(lèi)似。

  1. scroll?事件,每隔一秒計(jì)算一次位置信息等
  2. 瀏覽器播放事件,每個(gè)一秒計(jì)算一次進(jìn)度信息等
  3. input 框?qū)崟r(shí)搜索并發(fā)送請(qǐng)求展示下拉列表,每隔一秒發(fā)送一次請(qǐng)求 (也可做防抖)

代碼如下,可以看出來(lái)「節(jié)流重在加鎖?timer=timeout

function?throttle?(f,?wait)?{
??let?timer
??return?(...args)?=>?{
????if?(timer)?{?return?}
????timer?=?setTimeout(()?=>?{
??????f(...args)
??????timer?=?null
????},?wait)
??}
}

總結(jié) (簡(jiǎn)要答案)

  • 防抖:防止抖動(dòng),單位時(shí)間內(nèi)事件觸發(fā)會(huì)被重置,避免事件被誤傷觸發(fā)多次。「代碼實(shí)現(xiàn)重在清零?clearTimeout。防抖可以比作等電梯,只要有一個(gè)人進(jìn)來(lái),就需要再等一會(huì)兒。業(yè)務(wù)場(chǎng)景有避免登錄按鈕多次點(diǎn)擊的重復(fù)提交。
  • 節(jié)流:控制流量,單位時(shí)間內(nèi)事件只能觸發(fā)一次,與服務(wù)器端的限流 (Rate Limit) 類(lèi)似。「代碼實(shí)現(xiàn)重在開(kāi)鎖關(guān)鎖?timer=timeout; timer=null。節(jié)流可以比作過(guò)紅綠燈,每等一個(gè)紅燈時(shí)間就可以過(guò)一批。

02 在前端開(kāi)發(fā)中,如何獲取瀏覽器的唯一標(biāo)識(shí)

??更多描述: 如何獲取瀏覽器的唯一標(biāo)識(shí),原理是什么??
?

在 Issue 中交流與討論: 02 在前端開(kāi)發(fā)中,如何獲取瀏覽器的唯一標(biāo)識(shí)[2]

?

由于不同的系統(tǒng)顯卡繪制?canvas?時(shí)渲染參數(shù)、抗鋸齒等算法不同,因此繪制成圖片數(shù)據(jù)的?CRC?校驗(yàn)也不一樣。

function?getCanvasFp?()?{
??const?canvas?=?document.getElementById('canvas')
??const?ctx?=?canvas.getContext('2d')
??ctx.font?=?'14px?Arial'
??ctx.fillStyle?=?'#ccc'
??ctx.fillText('hello,?shanyue',?2,?2)
??return?canvas.toDataURL('image/jpeg')
}

因此根據(jù)?canvas?可以獲取瀏覽器指紋信息。

  1. 繪制?canvas,獲取?base64?的 dataurl
  2. 對(duì) dataurl 這個(gè)字符串進(jìn)行?md5?摘要計(jì)算,得到指紋信息

但是對(duì)于常見(jiàn)的需求就有成熟的解決方案,若在生產(chǎn)環(huán)境使用,可以使用以下庫(kù)

  • fingerprintjs2[3]

它依據(jù)以下信息,獲取到瀏覽器指紋信息,「而這些信息,則成為?component

  1. canvas
  2. webgl
  3. UserAgent
  4. AudioContext
  5. 對(duì)新式 API 的支持程度等
requestIdleCallback(function?()?{
??Fingerprint2.get((components)?=>?{
????const?values?=?components.map((component)?=>?component.value)
????const?fp?=?Fingerprint2.x64hash128(values.join(''),?31)
??})
})

?fingerprintjs2?中,對(duì)于?component?也有分類(lèi)

  • browser independent component[4]:有些?component?同一設(shè)備跨瀏覽器也可以得到相同的值,有些獨(dú)立瀏覽器,得到不同的值
  • stable component[5]: 有些?component?刷新后值就會(huì)發(fā)生變化,稱(chēng)為不穩(wěn)定組件

在實(shí)際業(yè)務(wù)中,可根據(jù)業(yè)務(wù)選擇合適的組件

const?options?=?{
??excludes:?{userAgent:?true,?language:?true}
}

簡(jiǎn)答

根據(jù)?canvas?可以獲取瀏覽器指紋信息

  1. 繪制?canvas,獲取?base64?的 dataurl
  2. 對(duì) dataurl 這個(gè)字符串進(jìn)行?md5?摘要計(jì)算,得到指紋信息

若在生產(chǎn)環(huán)境使用,可以使用 fingerprintjs2[6],根據(jù)業(yè)務(wù)需求,如單設(shè)備是否可跨瀏覽器,以此選擇合適的?component

03 在服務(wù)端應(yīng)用中如何獲得客戶端 IP

?

在 Issue 中交流與討論: 03 在服務(wù)端應(yīng)用中如何獲得客戶端 IP[7]

?

「如果有?x-forwarded-for?的請(qǐng)求頭,則取其中的第一個(gè) IP,否則取建立連接 socket 的 remoteAddr?!?/strong>

?x-forwarded-for?基本已成為了基于 proxy 的標(biāo)準(zhǔn) HTTP 頭,格式如下,可見(jiàn)第一個(gè) IP 代表其真實(shí)的 IP,可以參考 MDN X-Forwarded-For[8]

X-Forwarded-For:?203.0.113.195,?70.41.3.18,?150.172.238.178
X-Forwarded-For:?,?,?

以下是?koa?獲取 IP 的方法

??get?ips()?{
????const?proxy?=?this.app.proxy;
????const?val?=?this.get(this.app.proxyIpHeader);
????let?ips?=?proxy?&&?val
????????val.split(/\s*,\s*/)
??????:?[];
????if?(this.app.maxIpsCount?>?0)?{
??????ips?=?ips.slice(-this.app.maxIpsCount);
????}
????return?ips;
??},

??get?ip()?{
????if?(!this[IP])?{
??????this[IP]?=?this.ips[0]?||?this.socket.remoteAddress?||?'';
????}
????return?this[IP];
??},

參見(jiàn)源碼: https://github.com/koajs/koa/blob/master/lib/request.js#L433

04 js 如何全部替代一個(gè)子串為另一個(gè)子串

??更多描述: 假設(shè)有一個(gè)字符串 `hello. hello. hello. ` 需要替換為 `AAA`,即把 `hello. ` 替換為 `A`??
?

在 Issue 中交流與討論: 04 js 如何全部替代一個(gè)子串為另一個(gè)子串[9]

?

如果需要全量替換字符串,可以使用?String.prototype.replace(re, replacer),其中正則表達(dá)式需要開(kāi)啟?global?flag

const?s?=?'foo?foo?foo'
s.replce(/foo/g,?'bar')

那如題中,「是否可以使用正則表達(dá)式來(lái)替代子串」

答:「不可以,因?yàn)槭褂米哟畼?gòu)建正則時(shí),有可能有特殊字符,就有可能出現(xiàn)問(wèn)題」,如下

//?期待結(jié)果:?'AhelloX?hello3?'
>?'hello.?helloX?hello3?'.replace(new?RegExp('hello.?',?'g'),?'A')
"AAA"

而在?javascript?中替換子串只能使用一種巧妙的辦法:str.split('foo').join('bar')

>?'hello.?hello.?hello.?'.split('hello.?').join('A')
"AAA"

真是一個(gè)巧(笨)妙(拙)的辦法啊?。。。?!「大概 TC39 也意識(shí)到了一個(gè)問(wèn)題,于是出了一個(gè)新的 API」,在?ESNext?

String.prototype.replaceAll()

'aabbcc'.replaceAll('b',?'.');
//?'aa..cc'

詳細(xì)文檔在 String.prototype.replaceAll[10]

總結(jié)(及直接答案)

兩種辦法

  • str.split('foo').join('bar')
  • str.replaceAll('foo', 'bar'),在?ESNext?中,目前支持性不好

05 如何獲取一個(gè)進(jìn)程的內(nèi)存并監(jiān)控

??更多描述: 在編寫(xiě)腳本時(shí),有時(shí)會(huì)出現(xiàn)內(nèi)存過(guò)大發(fā)生 OOM 的事情,那我們?nèi)绾蔚弥硞€(gè)進(jìn)程的內(nèi)存?另外又如何監(jiān)控它??
?

在 Issue 中交流與討論: 05 如何獲取一個(gè)進(jìn)程的內(nèi)存并監(jiān)控[11]

?

通過(guò)?ps?可以獲知一個(gè)進(jìn)程所占用的內(nèi)存

$?ps?-O?rss?-p?3506
??PID???RSS?S?TTY??????????TIME?COMMAND
?3506??6984?S?pts/1????00:00:00?vim

如果要監(jiān)控內(nèi)存,肯定使用對(duì)進(jìn)程萬(wàn)能的命令?pidstat?(PS: 這名字一聽(tīng)就知道是干嘛的)

##?-r?顯示內(nèi)存信息
##?-p?指定?pid
##?1:?每個(gè)一秒打印一次
$?pidstat?-r?-p?3506?1
Linux?3.10.0-957.21.3.el7.x86_64?(shanyue)??????11/04/19????????_x86_64_????????(2?CPU)

20:47:35??????UID???????PID??minflt/s??majflt/s?????VSZ????RSS???%MEM??Command
20:47:36????????0??????3506??????0.00??????0.00??139940???6984???0.18??vim
20:47:37????????0??????3506??????0.00??????0.00??139940???6984???0.18??vim
20:47:38????????0??????3506??????0.00??????0.00??139940???6984???0.18??vim
20:47:39????????0??????3506??????0.00??????0.00??139940???6984???0.18??vim
20:47:40????????0??????3506??????0.00??????0.00??139940???6984???0.18??vim
20:47:41????????0??????3506??????0.00??????0.00??139940???6984???0.18??vim

pidstat?是屬于?sysstat?下的 linux 性能工具,但在 mac 中,如何定位內(nèi)存的變化?此時(shí)可以使用萬(wàn)能的?top/htop

$?htop?-p?31796

總結(jié)

簡(jiǎn)而言之,有以下三個(gè)命令

  1. pidstat -r
  2. htop/top -p
  3. ps -O rss -p

關(guān)于更多指標(biāo)的監(jiān)控可以參考我的文章: linux 各項(xiàng)監(jiān)控指標(biāo)小記[12]

06 CORS 如果需要指定多個(gè)域名怎么辦

?

在 Issue 中交流與討論: 06 CORS 如果需要指定多個(gè)域名怎么辦[13]

?

CORS?通過(guò)控制?Access-Control-Allow-Origin?控制哪些域名可以共享資源,取值如下

Access-Control-Allow-Origin:??|?*

其中?*?代表所有域名,origin?代表指定特定域名,那如何設(shè)置多個(gè)域名了?

此時(shí)需要通過(guò)代碼實(shí)現(xiàn),「根據(jù)請(qǐng)求頭中的?Origin?來(lái)設(shè)置響應(yīng)頭?Access-Control-Allow-Origin,那 Origin 又是什么東西?

請(qǐng)求頭: Origin

并不是所有請(qǐng)求都會(huì)自動(dòng)帶上?Origin,在瀏覽器中帶?Origin?的邏輯如下

  1. 如果存在跨域,則帶上?Origin,值為當(dāng)前域名
  2. 如果不存在跨域,則不帶?Origin

邏輯理清楚后,關(guān)于服務(wù)器中對(duì)于?Access-Control-Allow-Origin?設(shè)置多域名的邏輯也很清晰了

  1. 如果請(qǐng)求頭不帶有?Origin,證明未跨域,則不作任何處理
  2. 如果請(qǐng)求頭帶有?Origin,證明跨域,根據(jù)?Origin?設(shè)置相應(yīng)的?Access-Control-Allow-Origin:

使用偽代碼實(shí)現(xiàn)如下:

//?獲取?Origin?請(qǐng)求頭
const?requestOrigin?=?ctx.get('Origin');

//?如果沒(méi)有,則跳過(guò)
if?(!requestOrigin)?{
??return?await?next();
}

//?設(shè)置響應(yīng)頭
ctx.set('Access-Control-Allow-Origin',?requestOrigin)

Vary: Origin

此時(shí)可以給多個(gè)域名控制 CORS,但此時(shí)假設(shè)有兩個(gè)域名訪問(wèn)?static.shanyue.tech?的跨域資源

  1. foo.shanyue.tech,響應(yīng)頭中返回?Access-Control-Allow-Origin: foo.shanyue.tech
  2. bar.shanyue.tech,響應(yīng)頭中返回?Access-Control-Allow-Origin: bar.shanyue.tech

看起來(lái)一切正常,但如果中間有緩存怎么辦?

  1. foo.shanyue.tech,響應(yīng)頭中返回?Access-Control-Allow-Origin: foo.shanyue.tech,被 CDN 緩存
  2. bar.shanyue.tech,因由緩存,響應(yīng)頭中返回?Access-Control-Allow-Origin: foo.shanyue.tech,跨域出現(xiàn)問(wèn)題」

此時(shí),Vary: Origin?就上場(chǎng)了,代表為不同的?Origin?緩存不同的資源

總結(jié) (簡(jiǎn)要答案)

CORS 如何指定多個(gè)域名?

「根據(jù)請(qǐng)求頭中的?Origin?來(lái)設(shè)置響應(yīng)頭?Access-Control-Allow-Origin,思路如下

  1. 總是設(shè)置?Vary: Origin,避免 CDN 緩存破壞 CORS 配置
  2. 如果請(qǐng)求頭不帶有?Origin,證明未跨域,則不作任何處理
  3. 如果請(qǐng)求頭帶有?Origin,證明瀏覽器訪問(wèn)跨域,根據(jù)?Origin?設(shè)置相應(yīng)的?Access-Control-Allow-Origin:

使用偽代碼實(shí)現(xiàn)如下

//?獲取?Origin?請(qǐng)求頭
const?requestOrigin?=?ctx.get('Origin');

ctx.set('Vary',?'Origin')

//?如果沒(méi)有,則跳過(guò)
if?(!requestOrigin)?{
??return?await?next();
}

//?設(shè)置響應(yīng)頭
ctx.set('Access-Control-Allow-Origin',?requestOrigin)
?

相關(guān)問(wèn)題:如何避免 CDN 為 PC 端緩存移動(dòng)端頁(yè)面[14]

?

07 既然 cors 配置可以做跨域控制,那可以防止 CSRF 攻擊嗎

?

在 Issue 中交流與討論: 07 既然 cors 配置可以做跨域控制,那可以防止 CSRF 攻擊嗎?[15]

?

「對(duì) CORS 一點(diǎn)用也沒(méi)有」

  1. form?提交不通過(guò)?CORS?檢測(cè)」,你可以在本地進(jìn)行測(cè)試
  2. 即使通過(guò)?xhr??fetch?進(jìn)行提交被 CORS 攔住,「但是對(duì)于簡(jiǎn)單請(qǐng)求而言,請(qǐng)求仍被發(fā)送」,已造成了攻擊

08 如何避免 CDN 為 PC 端緩存移動(dòng)端頁(yè)面

?

在 Issue 中交流與討論: 08 如何避免 CDN 為 PC 端緩存移動(dòng)端頁(yè)面[16]

?

如果 PC 端和移動(dòng)端是一套代碼則不會(huì)出現(xiàn)這個(gè)問(wèn)題。「這個(gè)問(wèn)題出現(xiàn)在 PC 端和移動(dòng)端是兩套代碼,卻共用一個(gè)域名?!?/strong>

使用?nginx?配置如下,根據(jù) UA 判斷是否移動(dòng)端,而走不同的邏輯 (判斷 UA 是否移動(dòng)端容易出問(wèn)題)

location / {
// 默認(rèn) PC 端
root /usr/local/website/web;

# 判斷 UA,訪問(wèn)移動(dòng)端
if ( $http_user_agent ~* "(Android|webOS|iPhone|iPad|BlackBerry)" ){
root /usr/local/website/mobile;
}

index index.html index.htm;
}

解決方案通常使用?Vary?響應(yīng)頭,來(lái)控制 CDN 對(duì)不同請(qǐng)求頭的緩存。

「此處可以使用?Vary: User-Agent?,代表如果 User-Agent 不一樣,則重新發(fā)起請(qǐng)求,而非從緩存中讀取頁(yè)面」

Vary: User-Agent

當(dāng)然,User-Agent?實(shí)在過(guò)多,此時(shí)緩存失效就會(huì)過(guò)多。

簡(jiǎn)答

使用?Vary: User-Agent,根據(jù) UA 進(jìn)行緩存。

Vary: User-Agent

但最好不要出現(xiàn)這種情況,PC 端和移動(dòng)端如果是兩套代碼,建議用兩個(gè)域名,理由如下

  1. nginx?判斷是否移動(dòng)端容易出錯(cuò)
  2. 對(duì)緩存不友好

09 如何實(shí)現(xiàn)表格單雙行條紋樣式

?

在 Issue 中交流與討論: 09 如何實(shí)現(xiàn)表格單雙行條紋樣式[17]

?

通過(guò)?css3?中偽類(lèi)?:nth-child?來(lái)實(shí)現(xiàn)。其中?:nth-child(an+b)?匹配下標(biāo)?{ an + b; n = 0, 1, 2, ...}?且結(jié)果為整數(shù)的子元素

  • nth-child(2n)/nth-child(even): 雙行樣式
  • nth-child(2n+1)/nth-child(odd): 單行樣式

其中?tr?在表格中代表行,實(shí)現(xiàn)表格中單雙行樣式就很簡(jiǎn)單了:

tr:nth-child(2n)?{
??background-color:?red;
}


tr:nth-child(2n+1)?{
??background-color:?blue;
}

同理:

  1. 如何匹配最前三個(gè)子元素:?:nth-child(-n+3)
  2. 如何匹配最后三個(gè)子元素:?:nth-last-child(-n+3)

10 簡(jiǎn)述下 css specificity

?

在 Issue 中交流與討論: 10 簡(jiǎn)述下 css specificity[18]

?

css specificity?即 css 中關(guān)于選擇器的權(quán)重,以下三種類(lèi)型的選擇器依次下降

  1. id?選擇器,如?#app
  2. classattribute??pseudo-classes?選擇器,如?.header、[type="radio"]?:hover
  3. type?標(biāo)簽選擇器和偽元素選擇器,如?h1p??::before

其中通配符選擇器?*,組合選擇器?+ ~ >,否定偽類(lèi)選擇器?:not()?對(duì)優(yōu)先級(jí)無(wú)影響

另有內(nèi)聯(lián)樣式?

??!important(最高) 具有更高的權(quán)重

?

`:not` 的優(yōu)先級(jí)影響 - codepen[19]?可以看出?:not?對(duì)選擇器的優(yōu)先級(jí)無(wú)任何影響

?

11 node 中 module.exports 與 exports 有什么區(qū)別

?

在 Issue 中交流與討論: 11 node 中 module.exports 與 exports 有什么區(qū)別[20]

?

「一句話:exports??module.exports?的引用,如果?exports?沒(méi)有重賦值,則二者沒(méi)有任何區(qū)別」

類(lèi)似如下所示

const?exports?=?module.exports

那如下結(jié)果會(huì)如何導(dǎo)出?

module.exports?=?100
exports?=?3

很顯然會(huì)導(dǎo)出 100,畢竟?exports?進(jìn)行了重賦值。

「那在 node 源碼中如何實(shí)現(xiàn)的呢?」?從源碼里可以看出?「exports」?的實(shí)質(zhì)

module wrapper

詳見(jiàn)源碼: https://github.com/nodejs/node/blob/master/lib/internal/modules/cjs/loader.js#L1252,可以看出符合猜想

眾所周知,node 中所有的模塊代碼都被包裹在這個(gè)函數(shù)中

(function(exports,?require,?module,?__filename,?__dirname)?{
??exports.a?=?3
});

而以下源碼指出,exports?是如何得來(lái)

const?dirname?=?path.dirname(filename);
const?require?=?makeRequireFunction(this,?redirects);
let?result;
//?從這里可以看出來(lái)?exports?的實(shí)質(zhì)
const?exports?=?this.exports;
const?thisValue?=?exports;
const?module?=?this;
if?(requireDepth?===?0)?statCache?=?new?Map();
if?(inspectorWrapper)?{
??result?=?inspectorWrapper(compiledWrapper,?thisValue,?exports,
????????????????????????????require,?module,?filename,?dirname);
}?else?{

??//?這里是模塊包裝函數(shù)
??result?=?compiledWrapper.call(thisValue,?exports,?require,?module,
????????????????????????????????filename,?dirname);
}

12 如何獲取當(dāng)前系統(tǒng)中的在線用戶數(shù) (并發(fā)用戶數(shù))

??更多描述: 一些 SaaS 系統(tǒng)基于 Pricing 的考慮,會(huì)限制團(tuán)隊(duì)人數(shù)及同時(shí)在線數(shù),如何實(shí)現(xiàn)??
?

在 Issue 中交流與討論: 12 如何獲取當(dāng)前系統(tǒng)中的在線用戶數(shù) (并發(fā)用戶數(shù))[21]

?
?

一些 SaaS 系統(tǒng)基于定價(jià)策略的考慮,會(huì)限制團(tuán)隊(duì)人數(shù)及同時(shí)在線數(shù),如何實(shí)現(xiàn)?

?

通過(guò)?redis??zset?可實(shí)現(xiàn)并發(fā)用戶數(shù)。

當(dāng)一個(gè)用戶請(qǐng)求任何接口時(shí),實(shí)現(xiàn)一個(gè) middleware,處理以下邏輯

//?當(dāng)一個(gè)用戶訪問(wèn)任何接口時(shí),對(duì)該用戶Id,寫(xiě)入?zset
await?redis.zadd(`Organization:${organizationId}:concurrent`,?Date.now(),?`User:${userId}`)

//?查詢當(dāng)前機(jī)構(gòu)的并發(fā)數(shù)
//?通過(guò)查詢一分鐘內(nèi)的活躍用戶來(lái)確認(rèn)并發(fā)數(shù),如果超過(guò)則拋出特定異常
const?activeUsers?=?await?redis.zrangebyscore(`Organization:${organizationId}:concurrent`,?Date.now()?-?1000?*?60,?Date.now())

//?查出并發(fā)數(shù)
const?count?=?activeUsers.length

//?刪掉過(guò)期的用戶
await?redis.zrembyscore(`Organization:${organizationId}:concurrent`,?Date.now()?-?1000?*?60,?Date.now())

總結(jié)

  1. 每當(dāng)用戶訪問(wèn)服務(wù)時(shí),把該用戶的 ID 寫(xiě)入優(yōu)先級(jí)隊(duì)列,權(quán)重為當(dāng)前時(shí)間
  2. 根據(jù)權(quán)重(即時(shí)間)計(jì)算一分鐘內(nèi)該機(jī)構(gòu)的用戶數(shù)
  3. 刪掉一分鐘以上過(guò)期的用戶

13 如何把 json 數(shù)據(jù)轉(zhuǎn)化為 demo.json 并下載文件

?

在 Issue 中交流與討論: 13 如何把 json 數(shù)據(jù)轉(zhuǎn)化為 demo.json 并下載文件[22]

?

json 視為字符串,可以利用?DataURL?進(jìn)行下載

Text -> DataURL

除了使用 DataURL,還可以轉(zhuǎn)化為 Object URL 進(jìn)行下載

Text -> Blob -> Object URL

可以把以下代碼直接粘貼到控制臺(tái)下載文件

function?download?(url,?name)?{
??const?a?=?document.createElement('a')
??a.download?=?name
??a.rel?=?'noopener'
??a.href?=?url
??//?觸發(fā)模擬點(diǎn)擊
??a.dispatchEvent(new?MouseEvent('click'))
??//?或者?a.click()
}

const?json?=?{
??a:?3,
??b:?4,
??c:?5
}
const?str?=?JSON.stringify(json,?null,?2)

//?方案一:Text -> DataURL
const?dataUrl?=?`data:,${str}`
download(dataUrl,?'demo.json')

//?方案二:Text -> Blob -> ObjectURL
const?url?=?URL.createObjectURL(new?Blob(str.split('')))
download(url,?'demo1.json')

總結(jié)

  1. 模擬下載,可以通過(guò)新建一個(gè)??標(biāo)簽并設(shè)置?url??download?屬性來(lái)下載
  2. 可以通過(guò)把?json?轉(zhuǎn)化為?dataurl?來(lái)構(gòu)造 URL
  3. 可以通過(guò)把?json?轉(zhuǎn)換為?Blob?再轉(zhuǎn)化為?ObjectURL?來(lái)構(gòu)造 URL

14 在瀏覽器中如何監(jiān)聽(tīng)剪切板中內(nèi)容

?

在 Issue 中交流與討論: 14 在瀏覽器中如何監(jiān)聽(tīng)剪切板中內(nèi)容[23]

?

通過(guò)?Clipboard API?可以獲取剪切板中內(nèi)容,但需要獲取到?clipboard-read?的權(quán)限,以下是關(guān)于讀取剪貼板內(nèi)容的代碼:

//?是否能夠有讀取剪貼板的權(quán)限
//?result.state?==?"granted"?||?result.state?==?"prompt"
const?result?=?await?navigator.permissions.query({?name:?"clipboard-read"?})

//?獲取剪貼板內(nèi)容
const?text?=?await?navigator.clipboard.readText()
?

注: 該方法在?devtools?中不生效

?


Reference
[1]

01 什么是防抖和節(jié)流,他們的應(yīng)用場(chǎng)景有哪些:?https://github.com/shfshanyue/Daily-Question/issues/3

[2]

02 在前端開(kāi)發(fā)中,如何獲取瀏覽器的唯一標(biāo)識(shí):?https://github.com/shfshanyue/Daily-Question/issues/28

[3]

fingerprintjs2:?https://github.com/Valve/fingerprintjs2

[4]

browser independent component:?https://github.com/Valve/fingerprintjs2/wiki/Browser-independent-components

[5]

stable component:?https://github.com/Valve/fingerprintjs2/wiki/Stable-components

[6]

fingerprintjs2:?https://github.com/Valve/fingerprintjs2

[7]

03 在服務(wù)端應(yīng)用中如何獲得客戶端 IP:?https://github.com/shfshanyue/Daily-Question/issues/288

[8]

X-Forwarded-For:?https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For

[9]

04 js 如何全部替代一個(gè)子串為另一個(gè)子串:?https://github.com/shfshanyue/Daily-Question/issues/361

[10]

String.prototype.replaceAll:?https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll

[11]

05 如何獲取一個(gè)進(jìn)程的內(nèi)存并監(jiān)控:?https://github.com/shfshanyue/Daily-Question/issues/4

[12]

linux 各項(xiàng)監(jiān)控指標(biāo)小記:?https://shanyue.tech/op/linux-monitor.html

[13]

06 CORS 如果需要指定多個(gè)域名怎么辦:?https://github.com/shfshanyue/Daily-Question/issues/364

[14]

如何避免 CDN 為 PC 端緩存移動(dòng)端頁(yè)面:?https://github.com/shfshanyue/Daily-Question/issues/330

[15]

07 既然 cors 配置可以做跨域控制,那可以防止 CSRF 攻擊嗎 :?https://github.com/shfshanyue/Daily-Question/issues/366

[16]

08 如何避免 CDN 為 PC 端緩存移動(dòng)端頁(yè)面:?https://github.com/shfshanyue/Daily-Question/issues/330

[17]

09 如何實(shí)現(xiàn)表格單雙行條紋樣式:?https://github.com/shfshanyue/Daily-Question/issues/309

[18]

10 簡(jiǎn)述下 css specificity:?https://github.com/shfshanyue/Daily-Question/issues/311

[19]

:not?的優(yōu)先級(jí)影響 - codepen:?https://codepen.io/shanyue/pen/dyGQqBe

[20]

11 node 中 module.exports 與 exports 有什么區(qū)別:?https://github.com/shfshanyue/Daily-Question/issues/351

[21]

12 如何獲取當(dāng)前系統(tǒng)中的在線用戶數(shù) (并發(fā)用戶數(shù)):?https://github.com/shfshanyue/Daily-Question/issues/368

[22]

13 如何把 json 數(shù)據(jù)轉(zhuǎn)化為 demo.json 并下載文件:?https://github.com/shfshanyue/Daily-Question/issues/352

[23]

14 在瀏覽器中如何監(jiān)聽(tīng)剪切板中內(nèi)容:?https://github.com/shfshanyue/Daily-Question/issues/315

[24]

【Q019】如何實(shí)現(xiàn)選中復(fù)制的功能:?https://github.com/shfshanyue/Daily-Question/issues/20


瀏覽 55
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評(píng)論
圖片
表情
推薦
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 免费观看AV| 人妻精品一区二区三区| 在线播放内射| 国产视频123区| 国产一级a毛一级a毛片视频黑人| 国产av影视| 国产精品成人无码专区| 大香蕉做爱视频| 青青草婷婷| 亚洲人妻av| 中文日韩字幕| 亚洲免费观看高清完整版| 最近中文字幕中文翻译歌词| 亚洲免费观看高清视频| 免费黄色成人网站| 亚洲无码成人网站| 五月丁香亭亭| 69国产精品无码免费| WWW亚洲视频| 露脸偷拍AV2025| 九哥操逼视频| 日韩小电影免费观看高清完整版在线观 | 久热官网| 青娱乐老视频| 日韩在线你懂的| 在线视频福利| 国产淫乱视频| 国产美女被操| 18禁91| 日逼网站免费观看| 国产区欧美去区在线| 免费人成视频在线播放| 欧美精品| 无码日韩AV| 在线观看国产视频| 性无码一区二区| 久久偷拍网| 神马午夜三级| 男女AV在线免费观看| 久久久久国产一区二区三区四区| 欧美黄片网站| 色天使av| 中国熟女HD| 日韩一级片在线| 亚洲天堂美女| 亚洲婷婷小说| 亚洲一区中文字幕成人在线| 嫩草视频在线观看| 亚洲激情五月天| 狠狠干狠狠色| 精品91视频| 国产成人AV在线观看| 婷婷五月中文| 台湾精品一区二区三区| 99精品国产一区二区| 91精品国产闺蜜国产在线闺蜜 | 亚洲九区| 不卡视频一区二区三区| 好男人WWW社区在线视频夜恋| 亚洲AV无码乱码A片无码沈樵| 久久你懂的| 毛片69| 久色性爱视频| 99这里只有精品| 无码av在线观看| 久久国产成人| 秋霞国产| 无码中文字幕在线播放| 日韩午夜电影| 五月天婷婷丁香网| 97人妻人人澡人人爽人人| 久精久久| 天天射天天日天天干| 日逼高清视频| 高清无码久久| 天天干网址| 欧美爱| 韩国毛片基地久久| 欧美撒色逼撒| 三级乱伦86丝袜无码| 18禁黄网站| 欧美一级片在线观看| 国产又爽又黄免费网站校园里| 韩国一级av| 国产一级AV国产免费| 蜜桃视频一区二区三区四区使用方法 | 少妇人妻一区二区三区| 国产69视频在线观看| 高清无码操逼视频| 超碰997| 先锋影音亚洲AV每日资源网站 | 成人三级片网| 天天撸天天日| 欧美色爽| 中文字幕av网| 婷婷深爱激情| 国产大屌| 免费自拍视频| AV大片在线观看| 性色在线| 国内精品久久久久久久久98| 国产a精品| 日韩免费精品视频| 一区二区三区久久久久| 操逼视频网站免费观看| 亚洲欧美视频一区| 精品一区国产| 综合网欧美| 香蕉AV777XXX色综合一区| 久久私拍| 日本高清不卡视频| 依人综合网| 欧美高清无码视频| 国产AV日韩AV| 中文字幕无码视频在线观看| 香蕉视频亚洲| 91丨国产丨精品丨丝袜| 人妻少妇无码视频| 51成人网| 日皮免费视频| 高潮喷水在线观看| 男女拍拍| 撸一撸成人在线做爱视频。 | 超碰93| 成人午夜黄片| 黄色成人网站在线播放| 黑人人妻黑人ThePorn| 色色免费视频| 久久凹凸视频| 成人网站在线免费看| 牛牛在线视频| 午夜操| 性感欧美美女| 国产中文人人国际| 欧美一道本在线| 国产高潮视频在线观看| 日韩在线观看免| 亚洲婷婷在线观看| 苍井空无码在线观看| 麻豆精品无码| 午夜在线观看视频| 蜜芽成人网站| 日本三级中文字幕| 91成人福利| 久草视频网站| 国产一区二区精品| 九九99电影| 国产精品可站18| 国产毛片18水真多18精品 | 草在线| 人妻福利导航| 免费一级a| 殴美A片| 亚洲黄片免费观看| 99re| 国产无码一| 日本家庭乱伦视频| 成人A片免费在线观看| 黄色av免费在线| 天天日夜夜拍| 日韩av中文字幕在线| 日韩在线视频免费| 久久久久成人片免费观看蜜芽| 麻豆AV96熟妇人妻| 五月天青青草超碰免费公开在线观看 | 影音先锋av资源在线| 婷婷色在线播放| 国模在线| 乱伦视频网| 亚洲色逼图片| 天堂综合网久久| 豆花视频在线免费观看| 伊人网av| 中文字幕免费高清网站| 黄色视频亚洲| 欧美浮力| 91无码一区二区三区在线| 五月婷婷色色网| 日本免费A∨| 三级片男人的天堂| 老女人日逼视频| 又紧又嫩又爽无遮挡免费| 久久久网站| 新亚洲天堂男子Av-| A级黄视频| 欧美黄色一级网站| 欧美日韩国产性爱| 影音先锋av中文字幕| 日本特黄视频| 18啪啪网站| 在线观看中文字幕AV| AV色站| 国产电影一区二区三区| 99这里都是精品| 成人久久AV| 日逼| 亚洲精品suv视频| 亲子伦一区二区三区| 欧美午夜福利视频| 亚洲任你操超碰在线| 欧美日韩高清一区| 无码一区二区黑人猛烈视频网站 | 羽月希无码| 久草超碰| 新超碰在线观看| 69成人国产| av女人的天堂| 麻豆激情| 超碰c| 色狠狠网| 996精品视频| 中文字幕黄色片| 国产一级婬片A片AAA樱花| 久久99深爱久久99精品| 亚洲人气无码AV| 亚洲AV久久无码| 免费无码蜜臀在线观看| 五月天伊人| 老鸭窝毛片| 欧美成人aaa| 婷婷五月色播| 四虎成人精品在永久免费| 四川乱子伦95视频国产| 中文字幕乱伦| 加勒比久久88| 国产高清中文字幕| 91网址| www.啪啪| 夜夜骑免费视频| 无码国产精品一区二区视频| 午夜AAA| 操逼网页| 黑人av在线观看| 成av人片一区二区三区久久| 波多野结衣av中文字幕| 人人妻人人草| 欧美区在线观看| 一区二区三区无码精品| 久久久夜夜夜| 五月婷婷五月天| 日韩欧美日本| 日韩AV电影网站| 成人做爰A片免费看网站| 欧美黄片在线免费观看| 西西人体大胆ww4444图片| 伊人大香蕉精品| 亚洲无码在线免费视频| 国产精品视频久久| 最新毛片网站〖网:.〗| 日本一本在线| 成人做爰黄A片免费看直播室动漫 中文字幕一区二区三区四虎在线 欧美熟妇精品一级A片视色 | 亚洲黄色免费电影| 国产成人午夜| 小黄片高清无码| 成功精品影院| 欧洲一区二区三区| 亚洲第一网无码性色| 人人弄人人| 男人的天堂社区| 国产少妇| 超碰自拍99| 天天操比| 在线激情| 日韩激情无码视频精选| 黄色永久免费| 免费一级无码成人片| 久久天堂| 亚洲伊人影院| 2025av天堂| 一区二区三区av| 唐嫣一级婬片A片AAA| 国产a片免费看| 久久精品熟妇丰满人妻99| 久久婷婷青青| 一级a免一级a做免费线看内裤的注意事项 | 91精品国产91久久久久久吃药| 再深点好爽灬轻点久久国产| 无码精品ThePorn| 91精彩视频| 91无码秘蜜桃一区二区三区-百度 精品人妻一区二区三区在线视频不卡 | 色欲久久久| 先锋资源av| 一区二区三区小视频| 日韩AV一区二区三区四区| www.51av| 欧美大胆视频| 一级a一级a爰片免费| 青青草原网| 国内精品人妻无码久久久影院蜜桃| 成人性爱在线播放| 91精品人妻一区二区三区蜜桃| 波多野结衣视频在线观看| A片动漫| av免费网站| 无码国产99精品久久久久网站| 四虎av在线| 黄色一区在线| 黄色免费av| 久久久福利视频| 免费观看高清无码视频| 欧美性爱导航| 国产在线激情视频| 国产精品黄色| AV天堂中文字幕| 亚洲色欲色欲www在线成人网| 好吊视频一区二区三区红桃视频you| 无码视频久久| 在线观看的av| 一区二区小视频| 伊人大综合| 亚洲无码在线播放| 北条麻妃91人妻互换| 婷婷五月在线观看| 先锋影音亚洲AV每日资源网站| 91丝袜一区二区三区| 亚洲无码免费看| 日韩中文字幕在线高清| 国产精品人妻AⅤ在线看| 日本四级片| 成人AV中文字幕| 操逼精品| 色哟哟无码精品一区二区三区| 久久久福利视频| 久久婷婷精品| 91污| 男人午夜AV| 7799精品视频天天看| 色婷婷综合在线| 欧美久久性爱视频| 国产免费一区二区| 欧洲黄色片| 白嫩外女BBwBBwBBw| 人妻精品一卡二卡| 国产丝袜自拍| 黄色视频在线观看网站| 日韩无码AV中文字幕| 18一20女一片毛片| 91麻豆成人精品国产| 欧美精产国品一区二区区别| 囯产精品久久久久久久久久久久久久| 先锋影音在线| 99热1| 国产成人黄色电影| 欧美日韩卡一卡二在线播放视频| 久爱无码| 中文字幕在线观看免费高清完整版在线观看| 俺也去射| 日韩经典无码| 婷婷五月激情中文字幕| 无码99| 逼逼爱插插网站| 日韩精品久久久| 2015中文字幕黄色视频| 做爰视频毛片下载蜜桃视频| 欧美九九| 成人性爱视频在线播放| 国产黄色录像| 国产亲子乱XXXXimim/| 91视频亚洲| 国产一级AV免费观看| 欧美日韩激情| 性无码区| 夜夜国自一区| 黄色无码视频在线观看| 黄色精品| 竹菊传媒一区二区三区| a在线| 天天综合在线观看| 久久99九九| 高清无码在线免费观看视频| 亚洲天堂影院| 亚洲字幕av| 一级黄色毛片| 国产精品国产三级国产专区53 | 日韩中文字幕无码中字字幕| 午夜福利100| 日韩h视频| 美女黄色视频永费在线观看网站| 一区二区三区四区免费看| 一级大毛片| 中文成人无字幕乱码精品区| 伊人操逼网| 人人艹人人| 日本在线不卡一区| 91视频内射| 免费观看成人毛片A片直播千姿| 中文字幕一区二区6页| 欧美综合区| 超碰精品在线| 日韩无码1| 丁香五月欧美| 大伊香蕉久久| 日韩三区| 婷婷国产在线| 大地8免费高清视频观看大全 | 成人一级A片| 亚洲天堂在线看| 午夜福利不卡视频| 欧美A片网站| 午夜精品久久久久久久久无码99热| 97福利在线| 天堂综合网久久| 国产AV一区二区三区精品| 国产人成| 欧美精品久久久| 中文字幕乱码中文乱码91| 白虎高清无码大尺度免费在线观看 | 中文字幕免费视频在线观看| 在线免费观看av片| 日韩一级欧美一级| 91久久久青青青青草| 五月丁香在线| 欧美肥臀| 特级特黄A级高潮播放| 欧美性网站| 成年人免费公开视频| 成人欧美在线| 人妻无码一区二区三区| 精品91美女| 青青青草视频在线观看| 黄色网页免费观看| 中文字幕亚洲日韩| 国产AV无码专区| 国产97热人人| 日韩亚洲欧美在线观看| 精品多人P群无码视频| 国产激情精品| 成人免费A片在线观看直播96 | 91人妻人人澡人人爽人人精品一 | 日韩在线三级片| 曰本中文字幕在线视频| 超碰在线观看免费| 久久久久99| 日韩成人无码AV| 午夜综合在线| 人人操人人干人人操| 91人人妻人人澡人人爽| 大地中文资源5页的更新内容| 亚洲无码免费看| 中文字幕人妻系列| 久久国产偷拍| 欧美一级特黄A片免费看视频小说| 日本黄色视频在线免费观看| 综合欧美国产视频二区| 久久99嫩草熟妇人妻蜜臀| 蜜臀av网站| 五月婷婷在线观看| 国产黄色片视频| 天天操视频网站| 怡红院av| 2025AV在线| 精品成人无码一区二区三区| 91久久久无码国产一区二区三区| 九九韩剧网最新电视剧免费观看 | 久久国产热| 日韩中文字幕在线播放| 91久久精品视频| 精品日韩AV| 中文字字幕在线中文乱码更新时间 | 在线中文字幕777| 中文字幕国产在线| 欧美在线视频a| 青娱乐在线成人| 人妻操| 天天干天天操天天爽| 吴梦梦md0069| 亚洲成人视频免费观看| 国产深喉视频| 欧美日韩操逼片| 尤物视频网| 国产91视频在线观看| 午夜黄色影视| 日本A级视频| 欧亚AV| 国产91页| 99re在线观看| 欧美三级黄色| 国产色婷婷精品综合在线播放| 大香蕉综合网| www.99精品| 国产成人AV一区二区三区在线观看 | 青青草原视频在线免费观看| 欧美激情一区二区| 影音先锋成人片| 久久毛片基地| 人人妻人人澡人人爽久久con| 日本高清黄色视频| 一本色道久久无码人妻精品69| 狠狠AV| 欧美综合国产| 四川BBBBBB搡BBBBB| 欧美性受XXXX黑人XYX性爽一| 大香蕉伊人在线视频| 高潮国产视频| 人人摸人人看人人草| 日本一区二区三区免费看| 日本黄色免费看| 无码秘蜜桃吴梦梦| 丁香激情综合| 国产精品九九九| 毛片小说| 99国产精品久久久久久久成人| 特猛特黄AAAAAA片| 欧美日韩激情| 成人无码区免费A片久久| 亚洲成人在线免费| 日本黄色的视频| 99热最新网址| 久久国内| a片免费观看视频| 97资源视频| 毛片网站在线观看| 亚洲无码大全| 一色综合| 欧美性爱无码在线| 日韩毛片在线观看| 99久久精品国产精品有折扣吗| 青青色在线视频| 欧洲精品在线免费观看| 99久热| 人妻FrXXeeXXee护士| 精品一区电影| 懂色AV无码中字幕一区| 国产吃奶| 天堂成人| 成人毛片在线播放| 亚洲男人的天堂av| 成人免费视频一区| 国产黄色视频在线观看| 懂色av,蜜臀AV粉嫩av| 青娱乐在线视频精品| 日韩一区二区无码视频| 无码国产传媒精品一区| 777在线视频| 九九精品国产| 日韩精品免费在线观看| 亚洲中文无码AV在线| 欧美成人精品无| 亚洲成人三区| 色呦呦一区二区三区| 亚洲精品秘一区二区三区在线观看| 特黄一级A片| gogogo高清在线观看免费直播中国| 欧美日韩性爱视频| 99热在线观看免费| 中文字幕日韩一级| AV在线大香蕉| a级黄色视频免费观看| 天堂网在线视频| 丁香婷婷视频| aaaaaa在线观看免费高清| xxxxx无码| 四川搡BBBBB搡BBB| 一区二区三区久久久| 久久久久91| 成年人黄色电影| 亚洲AV无码成人精品区在线欢看| 无码中文字| 中文字幕视频一区| 中文字幕成人在线| 丰满少妇在线观看网站| 2025av在线| 亚洲成人电影一区| 无码中文字| 豆花网无码视频观看| 欧美视频一区二区三区| 欧美大香蕉在线| 欧美日逼网站| 国产精品视频无码| 成人黄网站免费视频| 无码中文综合成熟精品AV电影 | 国产系列精品AV| 日韩av一级| 九九精品12| www99热| 91免费视频观看| 亚洲视频免费在线播放| 大香蕉黄色片| 中文字幕国产在线观看| 日韩在线大香蕉| 无码在线视频免费观看| 中文字幕在线无码| 色哟哟精品| 精品码一区二在线观看| 久久精品毛片| 熟妇熟女一区二区三区| 国产又爽又黄视频在线看| 亚洲一区自拍| 日韩乱伦毛片| 黄色视频| 无码一区二区三区免费| www.人人操| 丁香婷婷视频| 婷婷精品国产一区二区三区日韩| 色婷婷在线综合| 精品日韩中文字幕| 国产欧美一区二区三区特黄手机版| 激情aaa| 伊人青草视频9| 欧美视频一区二区| 中文字幕第83页| 中文字幕人成人乱码亚洲电影| 成人午夜av| 91丨九色丨国产在线| 日韩色情网| 国产小福利| 国产熟妇搡BBBB搡BBBB搡| 亚洲AV无码一区二区三区少妇 | 久久久久久久久久久久国产精品| 精品乱子伦一区二区三区下载| 欧美性爱永久| 亚洲无码免费观看| 操逼在线视频| 強姧伦一区二区三区在线播放| 水蜜桃网| 欧美黄色毛片| 国产AV无码成人精品区| 欧美日韩亚洲视频| 成人免费精品视频| 操逼视频高清无码| 91精品青青草| 六十路老熟女码视频| 日韩三级视频在线观看| 亚洲精品另类| 99久久婷婷国产综合精品青牛牛 | 日韩国产传媒| 黄色小说在线播放| 欧美性爱a视频| 白峰美羽人妻AND-499| 亚洲一区二区网站| 欧美AAAAAA视频| 日韩综合色视频导航| 东京热免费视频| 日韩欧美不卡| 亚洲性爱在线观看| 97人妻在线| 无码精品一区二区三区同学聚会| 日韩啪啪视频| 麻豆免费成人视频| 色呦呦一区二区三区| 中文字幕无码亚| 在线视频日本| 熟女视频91| 成人视频一区| 黄色免费在线观看| 97爱爱爱| 911国产精品| 亚洲成人免费观看| 天天看A片| yw在线播放| 亚洲无吗在线观看| av东方在线| 中文字幕日韩成人| 天天躁夜夜躁狠狠躁AV| 国产在线观看91| 91精品无码一区二区| 亚洲中文无码电影| 91蜜桃传媒在线观看| а中文在线天堂精品| 亚洲91网站| 迷情校园综合| 成人黄色小电影| 一级片学生妹| 大地资源38页| 中文字幕精品人妻| 俺也去五月婷婷| 精品久久一区二区| 91精品无码视频| 日本少妇BBW| 亚洲Av无码成人专区擼| 日本五十路熟女视频| 国产女人18毛片水18精| 亚欧免费视频| 国产黄色精品视频| 日韩毛片网| 黄色一级片视频| 午夜影音| 夜夜操天天干| 中国女人操逼视频| 欧美一级片在线观看| 久久久一区二区| 成人黄色在线视频| 成人片成人网久久蜜桃臀| 国产亚洲视频完整在线观看| 99热精品免费在线观看| 成人a一级片| av天天日| 欧美精品欧美精品系列| 日韩精品免费一区二区在线观看| 日韩第三页| 污视频网站免费观看| 99久久婷婷国产综合| 动漫啪啪视频| 日韩久久网站| 初尝人妻滑进去了莹莹视频| 久久久夜夜夜| 国产黄色免费观看| 蜜桃av色偷偷av老熟女| 日韩精品成人无码| 欧美一卡二卡三卡| 日韩无码精品视频| 五月丁香啪啪啪| 国产免费一区二区三区网站免费| 精品国产一区二区三区性色AV| 波多野结衣高清av久久直播免| 西西444WWW无码视频软件功能介绍| 91成人三级| 天天干天天日天天干天天日| 天天干天天操天天爽| www.五月天| 激情无码一区二区| 影音先锋av中文字幕| 成人国产精品视频| 久草免费在线视频| 日本人妻中文字幕| 免费在线观看黄片| 91色色网| 国产又黄又大又粗的视频| 亚洲天堂在线免费观看视频| 手机在线操B视频| 欧美三级理论片| 97精品人妻一区二区三区在线| 综合一区二区三区| 亚洲免费中文字幕| 影音先锋麻豆| 色色网站| 大屌av| 六月婷婷七月丁香| 日韩色情电影| 精品国产久久久久久| 人人爽久久涩噜噜噜网站| 8x8x黄色| 女人久久久| 噜噜视频| 米奇7777狠狠狠狠| 99久久人妻精品免费二区| 大肉大捧一进一出免费阅读| 国产深喉视频| 韩国中文无码| 亚州在线视频| 人人插人人操| 日本少妇视频| 无码不卡视频在线| 日韩精品观看| 免费色色| 黄色电影网站在线观看| 欧美日韩成人视频| 久久yzy| 无码免费一区二区三区| 免费日本A片| 一本之道DVD不卡视频| 国产69久久精品成人看| 天天色天天色天天色| 性爱福利社| 久久xxx| 一道本一区二区三区免费视频| 狠狠操狠狠插| 2019天天操| 日韩av高清| 免费无码AV| 最新一区二区三区| 淫荡五月天视频导航| 国产高清AV无码| 草草影院第一页YYCCC| 国产av一区二区三区四区| 无码黄片免费| 成人A片免费| 最近中文字幕高清2019中文字幕 | 日韩三级一区| 中文字幕人成人乱码亚洲电影| 成人性爱在线观看| 欧美精品成人免费片| 精品乱子伦一区二区在线播放| 国产女人在线视频| 26uuu亚洲| 操屄影院| 亚洲看片| 99久久精彩视频| 高清无码视频免费| 香蕉AV777XXX色综合一区| 一级黄色a片| 中文字幕无码不卡| 翔田千里无码视频| 成人免费视频一区二区三区 | 人人爱人人射| 国产性爱网站| 免费AV资源在线观看| 亚洲免费视频一区| 骚虎av| 三级网址在线观看| www.操操网| 欧美日韩中| 欧亚AV| 色午夜| 无码高清在线观看| 国产欧美在线免费观看| 黄色一级视频在线观看| 丁香五月天在线| 亚洲无码在线播放| 最美孕交vivoestv另类| 99热一区二区三区| 91青青草在线| 男女操网站| www.97yy| www.蜜桃av| 人人摸人人操人人射| av无码中文字幕| 日韩在线观看| 亚洲色男人天堂| 玖玖激情| 人人妻人人爱人人操| 91在线精品视频| 亚洲一道本在线| 国产黄色小视频在线观看| 人人妻人人爱人人操| 一区二区三区在线看| 婷婷爱五月天| 日韩成人三级片| 中文二区| 国产日韩欧美| 午夜福利AV电影| 一本无码视频| 亚洲视频天堂| 日韩欧美综合一区| 蜜臀精品色无码蜜臀AV| 色色色亚洲| 人人看人人摸人人| 婷婷天天干| 操操操av| 欧美黑人操逼| 五月av| 日韩av在线看| 日韩精品免费无码视频| 亚洲毛片在线观看| 毛片在线看片| 天天插天天拍| 婷婷五月久久| 久久久精品| 天天逼网| 99精品热视频| 尤物视频网址| 伊人9| 久久精品国产亚洲AV成人婷婷| 99视频在线观看免费| 日韩99在线观看| 丝瓜视频黄| 成人无码交配视频国产网站| 九九色综合| 人人摸人人操人人看| wwwa片| av毛片| 97色碰| www.99国产| 最好看的MV中文字幕国语电影 | 无码人妻在线播放| 国产高清一区二区三区| 日本成人中文字幕在线观看| 伊人黄色视频| 超碰在线大香蕉| 韩国深夜福利视频| 成人一级黄色片| 男人的天堂视频网站| 91亚洲视频| 欧美+日韩+国产+成人+在线| 探花视频在线观看| 日韩AV一区二区三区| 西西人体444www| 久久国产激情| 五月天激情网站| 中文字幕性爱电影| 噜噜在线| 高清无码一区| 人人弄| 亚洲精品成人av无码| 麻豆传媒视频观看| 国产黄色片在线播放| 欧美中文在线观看| 91麻豆精品A片国产在线观看| 亚洲秘无码一区二区三区电影| 国产精品国产精品国产专区| 一区二区三区精品婷婷| 亚洲AV无码成人精品一区| 国产激情| 97这里只有精品| 色哟哟在线观看| 欧美综合激情| 9l视频自拍蝌蚪9l视频成人| 人人澡超碰碰| 麻豆国产91在线播放| jizz免费观看| 影音先锋AV在线资源| 肏逼网| 91精品丝袜久久久久久| 春色av| 三级日韩| 激情五月婷婷色| 色五月在线| 九九re精品视频在线观看| 精品人妻午夜一区二区三区四区 | 91精品国产91久久久久久吃药 |