問題是如何重寫靜態 HTML 腳本嵌入:
<script async id="__script__id__"
type="text/javascript"
src="//abc.xyz.com/js/script.js">
</script>
到一個程式嵌入,它允許僅在特定條件下加載腳本。
的獎金被設定為的描述靜態/編程嵌入彼此之間的區別,特別是:
- 解釋 JS 規范如何使用權威參考處理以編程方式添加的腳本——當它們被加載和執行時。
- 解釋將腳本嵌入從 HTML 行內轉換為程式化如何影響瀏覽器優化(眾所周知,瀏覽器會掃描帶有
src屬性的HTML 腳本標簽并預加載它們),并使用權威參考。
uj5u.com熱心網友回復:
如果您已經弄清楚如何檢測您的標準,那么加載另一個腳本如下:
<head>
<!-- the usual head stuff goes here -->
<script>
// replace `criteria` with your actual criteria
if(criteria) {
const script = document.createElement('script');
script.id = '__script__id__';
script.type = 'text/javascript';
script.async = true;
script.src = '//abc.xyz.com/js/script.js';
document.head.append(script);
}
</script>
<!-- remaining scripts go here -->
<!-- injected script will end up here -->
</head>
檢查條件,創建元素,設定其屬性,將其添加到檔案中。
我嘗試查找有關此機制的詳細資訊。我能找到的最好的是來自 MDN 的關于腳本元素async和defer屬性的主題:
這些屬性的確切處理細節很復雜,涉及 HTML 的許多不同方面,因此分散在整個規范中。這些演算法描述了核心思想,但它們依賴于 HTML、外部內容和XML 中
<script>開始和結束標記的決議規則;方法的規則;腳本的處理;等等。document.write()
不幸的是,我對 W3 的各種 HTML 規范沒有必要的熟悉程度,無法將其轉換為簡單的英語,而且看起來熟悉需要相當長的時間。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/344621.html
標籤:javascript html 异步 浏览器 页面速度
