精品欧美一区二区三区在线观看 _久久久久国色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)

婷婷久久国产对白刺激五月99| 女人高潮被爽到呻吟在线观看| 久草热8精品视频在线观看| 久久精品小视频| 色诱av手机版| 日韩欧美一中文字暮专区| 欧美国产一区二区在线观看| 成人激情在线播放| 97免费在线观看视频| 欧美中文一区二区| 精品国产一二三区| 亚洲精品怡红院| 综合久久2o19| jlzzjlzz国产精品久久| 国产精品丝袜高跟| 日韩av一二三区| 999视频精品| 亚洲高清av在线| 天堂av2020| 在线黄色的网站| 一区二区三区在线视频播放| 日韩av大全| 免费a视频在线观看| 天堂影院一区二区| 性色av一区二区咪爱| 又色又爽的视频| 亚洲婷婷伊人| 精品国产a毛片| 999久久久精品视频| 成人日韩在线观看| 午夜久久电影网| 玖玖精品在线视频| 91电影在线播放| 91欧美激情一区二区三区成人| 亚洲一区二区三区sesese| 久久国产乱子伦精品| 99在线观看免费视频精品观看| 久久久av一区| 免费看的黄色录像| 国产欧美一区二区三区精品观看| 亚洲аv电影天堂网| 超碰中文字幕在线观看| 日韩av黄色| 欧美性大战xxxxx久久久| 精品国产免费av| a级片在线免费| 亚洲国产日韩综合久久精品| 好色先生视频污| 午夜免费视频在线国产| 日本一区二区三区在线不卡| 欧美第一黄网| 你懂的在线网址| 26uuu国产在线精品一区二区| 国产在线一区二| 天天干天天摸天天操| 激情综合色播激情啊| 国产中文字幕91| 一级欧美一级日韩| 激情成人午夜视频| 91免费人成网站在线观看18| 99热这里只有精品66| 国产精品18久久久久| 99理论电影网| 理论片中文字幕| 97久久超碰精品国产| 久久久久久欧美精品色一二三四 | 99riav国产精品| 性日韩欧美在线视频| 日韩欧美在线观看免费| 日韩av不卡一区二区| 国产精品高精视频免费| 又污又黄的网站| 国产精品一二三区在线| 翡翠波斯猫1977年美国| 婷婷色在线视频| 久久精品视频一区二区三区| 亚洲一区二区三区色| 在线观看电影av| 精品国产乱码久久久久久虫虫漫画| 九色在线视频观看| 成人在线视频播放| 777精品伊人久久久久大香线蕉| 久久精品久久99| 久久1电影院| 国产午夜精品全部视频播放| 老司机精品免费视频| 国产精品va| 热久久这里只有| 国产欧美综合视频| 99re66热这里只有精品3直播 | 亚洲最黄网站| 国产精品视频在线观看| www.蜜臀av.com| 久久久久青草大香线综合精品| 亚洲精品免费在线看| 七七成人影院| 在线观看av一区| 黄色av电影网站| 成人看的羞羞网站| 久久久久国产一区二区三区| 凹凸精品一区二区三区| 懂色av噜噜一区二区三区av| 日韩国产美国| sis001亚洲原创区| 欧美日本一道本| 久久无码人妻精品一区二区三区| 偷偷www综合久久久久久久| 91黑丝高跟在线| 国产精品亚洲欧美在线播放| 不卡的av网站| 在线观看成人免费| 日韩在线短视频| 亚洲精品福利视频| 免费在线观看一级片| 日韩精品一区第一页| 国产伦精品一区二区三区视频孕妇| av小片在线| 黑人巨大精品欧美一区二区一视频| 天美一区二区三区| 日韩成人三级| 国产成人久久精品| 视频二区在线观看| 一区二区三区四区不卡在线 | 日韩黄色片视频| aiai久久| 久久精品视频在线播放| 做爰视频毛片视频| 久久综合色之久久综合| 欧美激情视频免费看| 欧美h版在线观看| 色悠悠久久久久| 国产女主播喷水视频在线观看 | 亚洲第一男人av| 91成人福利视频| 精品在线观看视频| 亚洲蜜桃在线| 欧美xxxx做受欧美护士| 亚洲男人天堂2023| 91国产丝袜播放在线| 成人网在线免费视频| 日b视频免费观看| 免费精品一区二区三区在线观看| 最近2019年日本中文免费字幕| 国产黄色免费观看| 久久久综合视频| 精品视频在线观看一区| 国内精品偷拍| 欧美精品videosex牲欧美| 国产ts变态重口人妖hd| 亚洲欧洲制服丝袜| 九九热视频免费| 中文精品久久| 超碰97在线播放| 国产精品69xx| 日韩成人av在线| 五月婷婷色丁香| 久久久精品天堂| 国产av人人夜夜澡人人爽| 欧美日韩激情在线一区二区三区| 国产精品久久电影观看| 在线毛片网站| 日韩一区二区免费高清| 免费一级a毛片夜夜看 | 成人欧美一区二区| 成人性生交大片免费看网站| 亚洲成人网在线| 欧美啪啪小视频| 国产欧美精品一区aⅴ影院| 岛国av在线免费| 亚洲一区二区| 国产日产精品一区二区三区四区| 麻豆理论在线观看| 亚洲少妇激情视频| 国产亲伦免费视频播放| 亚洲一区二区五区| 毛片网站免费观看| 免费看日韩精品| 9色视频在线观看| 另类春色校园亚洲| 国产精品美女久久| av黄色在线| 日韩成人av网| 97人妻精品一区二区三区| 夜夜嗨av一区二区三区网页| av黄色一级片| 久久99国产精品免费| 久久99久久99精品| 国产探花一区在线观看| 91免费看片在线| 亚洲欧美小说色综合小说一区| 在线视频中文亚洲| 亚洲男人天堂久久| 欧美亚洲国产一区在线观看网站| 久久国产精品国语对白| 91玉足脚交白嫩脚丫在线播放| 手机视频在线观看| 成人av影院在线| 偷拍一区二区三区| 性少妇bbw张开| 国内成+人亚洲+欧美+综合在线 | 欧美视频亚洲图片| 亚洲三级电影在线观看| 婷婷久久伊人| 卡通动漫国产精品| 成人免费在线网址| sis001欧美| 欧美高清性猛交| 国产高清视频免费最新在线| 日韩一区欧美二区| 日本人妻伦在线中文字幕| 欧美美乳视频| 国产精品99久久久久久久| 日韩一区二区三区免费视频| 欧美激情精品久久久久久免费印度| 欧美偷拍视频| 精品国产一区二区三区四区四 | 欧美中日韩免费视频| 亚洲一二三区视频| 国产日韩欧美中文在线播放| а√在线中文在线新版| 久久视频这里只有精品| 国产精品无码2021在线观看| 亚洲黄色免费三级| 亚洲国产视频一区二区三区| 欧美日韩精品一区二区| 久久99精品波多结衣一区| 一二三区精品福利视频| 三级全黄做爰视频| 中文一区一区三区高中清不卡| 国产偷人妻精品一区| 成人免费高清视频在线观看| 中文字幕1234区| 奇米色一区二区| 成人三级视频在线播放| 国产亚洲毛片在线| 国产美女在线一区| 国产精品theporn| 亚洲激情免费视频| 综合天堂av久久久久久久| 国产日韩视频在线播放| 日韩欧美午夜| 亚洲欧洲久久| 成人免费av| 亚洲最新在线| 国产精品成人a在线观看| 亚洲国产婷婷香蕉久久久久久99| 精品久久久久久久久久久aⅴ| 欧美精品v日韩精品v国产精品| 天堂网av成人| 蜜桃成人免费视频| 免费久久精品| 日本成人三级| av在线不卡免费观看| 色一情一乱一伦一区二区三区丨| 国产精品一区2区3区| 清纯唯美一区二区三区| 国产一区二区观看| 亚洲免费在线精品一区| 91久久电影| 久久久天堂国产精品| 黄色免费成人| 乱妇乱女熟妇熟女网站| 青椒成人免费视频| 911av视频| youjizz久久| 国产交换配乱淫视频免费| 欧美激情综合在线| 欧美另类videoxo高潮| 亚洲在线一区二区三区| 91美女免费看| 欧美视频三区在线播放| 91一区二区视频| 欧美精品一区男女天堂| 日本黄在线观看| 中文字幕日韩在线视频| 高清免费电影在线观看| 欧美激情视频给我| 韩国成人动漫| 成人激情视频在线观看| 成人免费在线电影网| 欧美午夜精品久久久久免费视| 成人在线免费观看91| 五月天激情图片| 久久99伊人| 日韩av加勒比| 久久嫩草精品久久久精品一| 久久99久久99精品免费看小说| 亚洲一区免费在线观看| 亚洲色成人www永久网站| 欧美精品欧美精品系列| 天堂网av在线播放| 中文字幕日韩在线观看| 麻豆mv在线观看| 91精品久久久久久久久| 欧美三级午夜理伦三级在线观看| 视频一区二区精品| 亚洲精品男同| 亚洲娇小娇小娇小| 99精品黄色片免费大全| 香蕉久久久久久久| 欧美日韩亚洲91| 精品久久久无码中文字幕| 亚洲老司机av| 日本高清在线观看| 国产精品免费一区二区三区都可以| 大桥未久女教师av一区二区| 亚洲精品第一区二区三区| 99亚洲伊人久久精品影院红桃| 日韩av.com| 久久久国产午夜精品| 国产网址在线观看| 欧美精品18+| 黄色电影免费在线看| 欧美日韩国产成人在线| 欧美a一级片| 日韩精彩视频| 国产精品毛片在线看| 91av免费观看| 亚洲欧美中日韩| 亚洲成人av网址| 亚洲精品一区二区三区不| 欧美黑人xx片| 91在线免费视频| 久久一区二区三区电影| 人妻内射一区二区在线视频| 成人性生交大片免费看中文| 紧身裙女教师波多野结衣| 欧美视频一区在线| 高清毛片在线看| 日本不卡免费高清视频| 欧美日韩破处| 奇米影视亚洲色图| 国产传媒日韩欧美成人| 五月天色婷婷丁香| 欧美日韩在线播放| 国产人成在线观看| 国产成人小视频在线观看| 亚洲激情77| 91传媒久久久| 99久久国产综合色|国产精品| 久久综合色综合| 欧美变态口味重另类| 在线中文字幕电影| 亚洲影视中文字幕| 亚洲天天影视网| 制服下的诱惑暮生| 一区二区三区在线视频播放| а√天堂资源在线| 欧美国产日本高清在线 | 91精品国产综合久久精品图片| 一级毛片视频在线观看| 国产在线拍偷自揄拍精品| 亚洲国产精品91| 国产又粗又猛大又黄又爽| 一区二区国产盗摄色噜噜| 成 人 免费 黄 色| 韩国19禁主播vip福利视频| 精品久久97| www黄色av| 国产精品无人区| 亚洲一区在线观| 欧美精品在线免费播放| 白嫩白嫩国产精品| av之家在线观看| 国产喂奶挤奶一区二区三区| 亚洲免费视频二区| 久久精品99久久久久久久久| 日本在线一区二区三区| 无码熟妇人妻av在线电影| 97超碰欧美中文字幕| 国产精品xxxxxx| 久久精品视频在线| 国产调教精品| 欧美伦理视频在线观看| 国产精品成人网| 亚洲高清精品视频| 欧美又大又硬又粗bbbbb| 日本大胆欧美| 亚洲少妇一区二区三区| 色悠悠久久综合| 黄a在线观看| 精品国产乱码一区二区三区四区| 首页国产欧美日韩丝袜| 日韩福利小视频| 日韩精品免费在线视频| 欧美成人aaa| 九九热只有这里有精品| 久久精品一二三| 99热这里只有精品3| 青青草成人在线| 欧美+亚洲+精品+三区| 自拍偷拍中文字幕| 91精品国产色综合久久ai换脸| 嗯~啊~轻一点视频日本在线观看| 日韩久久久久久久| 国产传媒日韩欧美成人| 最近中文字幕免费在线观看| 久久久久久久久综合| 成人三级视频| 中文字幕 日本|