精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

我忽視了 document.currentScript 多年—你別再錯(cuò)過

開發(fā) 前端
??document.currentScript?? 會(huì)返回當(dāng)前正在執(zhí)行的 ??<script>?? 元素。把它想成腳本在運(yùn)行中照的一面鏡子:你能讀到自身來源、屬性,甚至臨時(shí)打上標(biāo)記,按需調(diào)整行為。

上周翻閱技術(shù)周刊時(shí),偶然看到一個(gè) DOM API:document.currentScript。起初我以為又是一個(gè)“用不上”的瀏覽器接口。結(jié)果一上手才發(fā)現(xiàn),它悄悄強(qiáng)大,專治那種“這個(gè)腳本到底從哪兒加載的?”的抓狂時(shí)刻。

它是干什么的?

document.currentScript 會(huì)返回當(dāng)前正在執(zhí)行的 <script> 元素。把它想成腳本在運(yùn)行中照的一面鏡子:你能讀到自身來源、屬性,甚至臨時(shí)打上標(biāo)記,按需調(diào)整行為。

<script>
  console.log("tag name:", document.currentScript.tagName);
  console.log(
    "script element?",
    document.currentScript instanceof HTMLScriptElement
  );

  // 打印當(dāng)前腳本的 src
  console.log("source:", document.currentScript.src);
  // 給腳本標(biāo)簽加個(gè)自定義屬性
  document.currentScript.setAttribute('data-loaded', 'true');

  // tag name: SCRIPT
  // script element? true
</script>

這段代碼能記錄腳本的來源 URL、加自定義屬性等。更棒的是:現(xiàn)代主流瀏覽器都支持。

再看一個(gè)例子:

<script data-external-key="123urmom" defer>
  console.log("external key:", document.currentScript.dataset.externalKey);

  if (document.currentScript.defer) {
    console.log("script is deferred!");
  }
</script>

<!-- 輸出:
external key: 123urmom
script is deferred!
-->

兩個(gè)需要特別當(dāng)心的點(diǎn):模塊與異步

1) type="module" 時(shí)不可用

**模塊腳本中 document.currentScript 始終是 null**:

<script type="module">
  console.log(document.currentScript);
  console.log(document.doesNotExist);

  // null
  // undefined
</script>

2) 異步回調(diào)里也拿不到

離開同步執(zhí)行棧(比如 setTimeout 回調(diào)里),它就不是“當(dāng)前腳本”了:

<script>
  console.log(document.currentScript);
  // <script> 標(biāo)簽對(duì)象

  setTimeout(() => {
    console.log(document.currentScript);
    // null
  }, 1000);
</script>

一個(gè)比你想的更常見的場(chǎng)景

在很多 CMS 平臺(tái)里,你不能隨意改 <script> 內(nèi)容,但又需要給共享腳本傳配置(比如第三方庫(kù)的 key、模式等)。

常見做法:用 data- 屬性傳參。難點(diǎn)在于:如何優(yōu)雅地拿到這個(gè)腳本標(biāo)簽本身的 data- 值? 答案就是 document.currentScript:

<!-- 共享庫(kù)需要配置 -->
<script
  data-stripe-pricing-table="{{pricingTableId}}"
  data-stripe-publishable-key="{{publishableKey}}"
>
  const scriptData = document.currentScript.dataset;

  document.querySelectorAll('[data-pricing-table]').forEach(table => {
    table.innerHTML = `
      <stripe-pricing-table
        pricing-table-id="${scriptData.stripePricingTable}"
        publishable-key="${scriptData.stripePublishableKey}"
        client-reference-id="picperf"
      ></stripe-pricing-table>
    `;
  })
</script>

干凈、無(wú)全局變量污染、也不需要專有約定。

其它好用的應(yīng)用方式

1) 寫庫(kù)時(shí)做加載方式/位置校驗(yàn)

你的庫(kù)需要異步加載?可以在入口就校驗(yàn):

<script defer src="./script.js"></script>
<!-- script.js -->
if (!document.currentScript.async) {
  throw new Error("This script must load asynchronously.");
}
// ...庫(kù)的其它邏輯

強(qiáng)制腳本出現(xiàn)在 <body> 起始處之后也可以這樣做:

const isFirstBodyChild =
  document.body.firstElementChild === document.currentScript;

if (!isFirstBodyChild) {
  throw new Error(
    "This MUST be loaded immediately after the opening <body> tag."
  );
}

2) 調(diào)試腳本來源

復(fù)雜頁(yè)面里追溯“這段腳本從哪兒引入的”很常見:

console.log(`Script: ${document.currentScript.src}, ID: ${document.currentScript.id}`);

3) 按屬性做條件分支

讓同一段腳本在不同頁(yè)面/環(huán)境下有不同行為:

<script data-env="production">
  if (document.currentScript.dataset.env === 'production') {
    console.log('Production mode activated');
  }
</script>

小結(jié)

document.currentScript 是個(gè)低調(diào)但實(shí)用的 API:

  • 同步腳本里,可直接拿到當(dāng)前 <script> 元素;
  • 適合從標(biāo)簽 data- 屬性傳參、調(diào)試來源、做加載方式/位置約束;
  • 記?。?*模塊腳本與異步回調(diào)中為 null**。
責(zé)任編輯:武曉燕 來源: 大遷世界
相關(guān)推薦

2011-09-22 13:56:56

2021-01-29 11:05:50

PrintPython代碼

2024-06-12 13:54:37

編程語(yǔ)言字符串代碼

2019-03-29 09:16:02

Windows 7Windows 8Windows 10

2022-12-27 08:01:09

設(shè)計(jì)模式https://mp

2020-09-08 08:45:39

jupyter插件代碼

2022-06-18 23:03:05

Seata分布式事務(wù)

2023-09-08 08:35:42

層疊樣式表CSS

2021-01-19 06:05:28

Python數(shù)據(jù)分析編程語(yǔ)言

2023-06-26 08:20:02

openapi格式注解

2025-05-19 08:10:55

Node.js優(yōu)化技術(shù)

2022-05-27 21:56:55

索引存儲(chǔ)MySQL 存儲(chǔ)引擎

2019-09-03 10:59:28

SQL索引語(yǔ)句

2019-12-04 07:39:07

MySQL索引數(shù)據(jù)庫(kù)

2020-12-02 11:18:50

print調(diào)試代碼Python

2021-06-16 00:57:16

JVM加載機(jī)制

2020-12-04 10:05:00

Pythonprint代碼

2020-04-03 09:45:09

Java多線程接口

2018-05-09 11:04:35

Java程序員大數(shù)據(jù)

2017-08-16 09:55:36

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

欧美性一区二区三区| 日韩精品一区二区三区swag | 国产亚洲1区2区3区| 日韩免费观看在线观看| 69精品无码成人久久久久久| 欧美日韩激情电影| **性色生活片久久毛片| 国产精品成人观看视频免费| 中文字幕超碰在线| 98精品视频| 精品日韩在线观看| 久久精品视频91| 免费观看在线午夜影视| 国产福利一区在线| 91av在线网站| 国产视频精品免费| 美腿丝袜亚洲图片| 欧美日韩一区国产| 国内精品在线观看视频| av在线播放网| a级高清视频欧美日韩| 国产精品成人av性教育| 中文字幕影音先锋| 久久av资源| 日韩精品一区二区三区中文不卡 | 免费毛片b在线观看| 国产精品视频第一区| 成人免费看片网址| 亚洲手机在线观看| 99xxxx成人网| 美女久久久久久久| 亚洲一二三四视频| 日韩免费电影在线观看| 欧美一级在线观看| www.xxx亚洲| 国产黄色大片在线观看| 亚洲欧美国产毛片在线| 四虎影院一区二区三区 | 色成人免费网站| 亚洲国产日韩一级| 久久最新免费视频| 香蕉视频免费在线播放| 久久久蜜臀国产一区二区| 国产91亚洲精品一区二区三区| 伊人免费在线观看| 日韩av一区二区在线影视| 国语自产精品视频在线看抢先版图片| 中文字幕无码日韩专区免费| 狠狠色丁香婷婷综合影院| 亚洲国产高清福利视频| 性生交大片免费看l| 美女视频一区| 欧美无人高清视频在线观看| 91国视频在线| 两个人看的在线视频www| 亚洲图片一区二区| 青青草视频在线视频| 五月香视频在线观看| 中文成人av在线| 日韩在线电影一区| 国产视频三级在线观看播放| 久久综合色婷婷| 蜜桃网站成人| 黄色av免费在线看| 久久久.com| 欧洲久久久久久| 毛片在线播放网址| 久久精品亚洲国产奇米99| 久久精品日韩| 男人久久精品| 国产三级欧美三级日产三级99 | 黄频网站在线观看| av一本久道久久综合久久鬼色| 国产美女精品久久久| 色网站免费观看| 91免费在线播放| 日韩久久久久久久| 调教视频免费在线观看| 亚洲精品欧美专区| 亚洲熟妇无码一区二区三区| 国产高清视频色在线www| 福利二区91精品bt7086| 男人天堂成人在线| 欧美亚洲人成在线| 日韩免费视频一区| 中文在线永久免费观看| 在线一级成人| 日韩有码在线电影| 久久国产露脸精品国产| 亚洲欧美久久| 成人黄色中文字幕| 好吊视频一二三区| 久久久美女毛片| 综合视频免费看| yellow字幕网在线| 欧美又粗又大又爽| 精品国产一二区| 真实原创一区二区影院| 久久久精品影院| 国产成人精品亚洲男人的天堂| 欧美一级二区| 91热精品视频| 亚洲人午夜射精精品日韩| 国产精品色呦呦| 久久久久99精品成人片| 性欧美超级视频| 欧美一区二区播放| 谁有免费的黄色网址| 中文无码久久精品| 日韩av手机在线看| 亚洲国产欧美另类| 欧美高清在线一区二区| 国产不卡一区二区视频| 日本久久久久| 亚洲精品一二区| 欧美高清视频一区二区三区| 日日摸夜夜添夜夜添国产精品| 91精品久久香蕉国产线看观看| 欧洲天堂在线观看| 亚洲成人午夜电影| 污视频网址在线观看| 最新亚洲精品| 高清在线视频日韩欧美| 国产又爽又黄又嫩又猛又粗| 成人美女在线观看| 女女同性女同一区二区三区按摩| 97成人资源| 精品捆绑美女sm三区| 日本激情视频一区二区三区| 丝袜亚洲精品中文字幕一区| 国产嫩草一区二区三区在线观看| 激情在线小视频| 欧美在线视频你懂得| 在线观看国产免费视频| 欧美91视频| 91亚洲va在线va天堂va国| 黄色av免费在线观看| 欧美日韩精品在线视频| 性活交片大全免费看| 欧美 日韩 国产一区二区在线视频 | 谁有免费的黄色网址| 亚洲女同同性videoxma| 国产v亚洲v天堂无码| 91亚洲天堂| 91精品国产综合久久精品图片 | 欧美在线xxx| 日韩中文字幕免费在线观看| 亚洲一区二区三区四区的| 樱花草www在线| 888久久久| 亚洲在线观看视频网站| fc2ppv国产精品久久| 91麻豆精品国产91久久久 | 欧美在线xxx| 五月婷在线视频| 日韩欧美精品在线观看| 亚洲国产无码精品| 久久久精品网| 日韩一区免费观看| 日本国产一区| 久久五月天综合| 精品久久无码中文字幕| 一区二区三区久久| 一区二区三区四区影院| 亚洲第一黄色| 麻豆亚洲一区| 国产精品极品美女在线观看| 国产一区二区三区精品久久久| 无码视频一区二区三区| 国产片一区二区三区| 亚洲性图一区二区| 自拍偷拍欧美专区| 国产v亚洲v天堂无码| 丝袜诱惑一区二区| 一本一本久久a久久精品综合小说 一本一本久久a久久精品牛牛影视 | 亚洲性生活视频| 亚洲自拍偷拍另类| 亚洲女性喷水在线观看一区| 日本不卡视频一区| 久久先锋影音| 天天综合中文字幕| 51亚洲精品| 青草热久免费精品视频| 91电影在线播放| 日韩视频在线观看一区二区| 国产精品99精品| 国产亚洲成aⅴ人片在线观看| 国产成人在线综合| 韩国精品一区二区三区| 欧美日韩精品中文字幕一区二区| 国产综合色激情| 欧美激情网友自拍| 极品白浆推特女神在线观看 | 亚洲国产成人一区二区| 婷婷久久综合九色国产成人| 国产不卡在线观看视频| 国产福利视频一区二区三区| 欧洲av无码放荡人妇网站| 视频在线不卡免费观看| 亚洲一区二区三区四区在线播放| 妞干网免费在线视频| 中文字幕在线日韩| 日本黄色免费视频| 欧美日韩另类一区| 国产无遮挡裸体免费视频| 国产精品入口麻豆九色| 在线免费播放av| 国产资源在线一区| 免费在线激情视频| 午夜性色一区二区三区免费视频| 美媛馆国产精品一区二区| 精品一级视频| 国产精品电影一区| 91资源在线观看| 久久精品成人一区二区三区| 色网站在线免费观看| 日韩一区二区三区视频| 91麻豆精品在线| 午夜影视日本亚洲欧洲精品| 欧美手机在线观看| 国产午夜亚洲精品理论片色戒| 韩国av中国字幕| 久久国产乱子精品免费女| 日韩在线综合网| 欧美网站在线| 亚洲一二三区在线| 九九亚洲视频| 国产一区自拍视频| 亚洲一区二区三区日本久久九| 国产精品免费久久久久久| 蜜臀久久精品| 91国产精品视频在线| 欧美大片黄色| 欧美成人精品在线播放| 麻豆免费在线观看| 日日狠狠久久偷偷四色综合免费| 黄色av免费在线观看| 国产午夜精品麻豆| 日韩在线视频第一页| 欧美成人三级在线| 国产三级按摩推拿按摩| 欧美高清性hdvideosex| 中文字幕一区二区人妻痴汉电车| 欧美性猛交xxxx免费看漫画| 亚洲 欧美 视频| 婷婷中文字幕综合| 国内免费精品视频| 欧美日韩国产黄| 精品国产免费观看| 欧美日韩免费一区| 天天干天天干天天干天天| 精品高清一区二区三区| 韩国av免费观看| 福利视频一区二区| 色一情一乱一伦| 91久久人澡人人添人人爽欧美| 欧美精品一二三四区| 91成人看片片| 国产精品51麻豆cm传媒| 欧美色国产精品| 一区二区久久精品66国产精品| 欧美酷刑日本凌虐凌虐| 99久久久国产精品无码免费| 欧美一区二区三级| 亚洲精品综合久久| 日韩av中文字幕在线免费观看| 日韩资源在线| 在线日韩欧美视频| 久草中文在线观看| 欧美黑人视频一区| 女厕盗摄一区二区三区| 国产激情999| 日韩一区二区三区四区五区| 91夜夜揉人人捏人人添红杏| 亚洲国产视频二区| 久久精品日产第一区二区三区乱码| 国产精品亚洲片在线播放| 亚洲电影网站| 综合激情网站| 日韩中文字幕在线免费| 久久只有精品| 久国产精品视频| 成人福利视频网站| 久久久久久久毛片| 亚洲免费观看高清完整版在线| 久久精品无码人妻| 在线观看国产日韩| 99精品人妻无码专区在线视频区| 亚洲第一二三四五区| 欧美精品a∨在线观看不卡| 色偷偷偷综合中文字幕;dd| 色黄网站在线观看| 国产99久久精品一区二区 夜夜躁日日躁| 巨大黑人极品videos精品| 国产精品一区二区av| 欧美日韩伦理| 国产精品igao激情视频| 老妇喷水一区二区三区| 欧美性受xxxx黒人xyx性爽| 91影院在线观看| 无码黑人精品一区二区| 黑人与娇小精品av专区| 97精品人妻一区二区三区香蕉| 亚洲精品国精品久久99热一| 日本天堂在线观看| 97超级碰碰碰久久久| 99视频有精品高清视频| 欧美另类高清视频在线| 中文字幕av亚洲精品一部二部| 精品久久久久久久免费人妻| 国产精品一二一区| 91资源在线播放| 精品久久久久久亚洲国产300 | 欧美不卡在线视频| yw193.com尤物在线| 午夜精品福利在线观看| av在线亚洲一区| 日本不卡久久| 国产精品日韩欧美一区| 欧美xxxx黑人| 国产精品黄色在线观看| 亚洲综合久久网| 亚洲第一视频网| av毛片在线播放| 国产免费观看久久黄| 亚洲高清极品| 国产婷婷一区二区三区| 国产91高潮流白浆在线麻豆| 国产又粗又猛又爽又黄的视频小说| 欧美日韩裸体免费视频| 人妻一区二区三区免费| 欧美精品18videos性欧| 精品国产一区二区三区性色av| 色一情一乱一伦一区二区三区| 黑人一区二区三区四区五区| 国产精品久久久久久久99| 国产精品嫩草影院av蜜臀| 国产99免费视频| 亚洲欧美国产一本综合首页| 伊人久久在线| 美女一区视频| 久久精品国语| 日韩中文字幕有码| 91精品91久久久中77777| 色播色播色播色播色播在线| 性色av一区二区三区在线观看| 亚洲乱码一区| 丁香婷婷综合激情| 国产91精品一区二区麻豆网站| 真实国产乱子伦对白在线| 欧美成人一区二区三区在线观看| 最近中文字幕免费mv2018在线| 91影视免费在线观看| 欧美精品三区| 美女流白浆视频| 亚洲五月六月丁香激情| 少妇无码一区二区三区| 97精品一区二区三区| 日韩一级电影| 人人干人人视频| 国产精品无人区| 国产精品女同一区二区| 久久不射热爱视频精品| 日韩精品免费视频一区二区三区 | 国产丝袜在线| 亚洲最大av在线| 影院欧美亚洲| 亚洲精品国产一区黑色丝袜| 欧美三级中文字幕| www.久久久久.com| 国产乱子伦精品| 久久一二三四| 男人与禽猛交狂配| 日韩av一区在线| 日本在线视频一区二区| 中文字幕第一页亚洲| 成人免费电影视频| 最好看的日本字幕mv视频大全| 久久精品影视伊人网| 免费看久久久| 日韩精品你懂的| 亚洲综合一区二区| 四虎电影院在线观看| 国产欧美欧洲在线观看| 红桃视频国产一区| 无码人妻精品一区二区中文| 91麻豆精品国产91久久久使用方法 | 国产午夜亚洲精品不卡| www.日韩在线观看| 日本乱人伦a精品| 999国产精品999久久久久久| 黄色国产在线视频| 欧美在线观看一二区| 欧美videossex另类| 日韩欧美亚洲日产国| 成人丝袜视频网| 中文字幕资源网| 97超碰国产精品女人人人爽| 婷婷亚洲图片| 色哟哟精品观看|