亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何僅獲取 JavaScript 文件的一部分?

如何僅獲取 JavaScript 文件的一部分?

jeck貓 2022-10-08 10:40:34
我有一個非常大的 JavaScript 文件(比如超過 10mb),按字節偏移分為不同的部分我想將此 JavaScript 文件作為不同的片段加載到我的 HTML 代碼中,具體取決于字節偏移量,使用腳本標記,這樣只會加載 JS 文件的那一部分我知道我可以在我的服務器上設置它以接收 GET 請求查詢字符串,就像?bytes=10-40在srcurl 的末尾一樣,但我想知道是否可以僅使用客戶端代碼來執行此操作,而無需添加服務器(假設服務器無論如何都支持accept-ranges:bytes,或者最好僅用于離線使用,如果可能的話,只包含離線 js 文件并以這種方式獲取內容)這可以在客戶端 JavaScript 中完成嗎(沒有其他XMLHttpRequestor fetch)?
查看完整描述

1 回答

?
月關寶盒

TA貢獻1772條經驗 獲得超5個贊

我認為將文件拆分為多個文件是最好的方法,這樣您將從緩存機制中受益。


話雖如此,您可以通過請求文件的一部分然后將響應文本注入script元素并將其附加到文檔中來實現您在問題中所要求的內容:


let xhr = new XMLHttpRequest();


xhr.open('GET', 'url/of/the/js/file');


xhr.setRequestHeader('Range', 'bytes=10-40');             // set the range of the request


xhr.onload = function () {                                // when the request finishes

    let scriptEl = document.createElement("script");      // create a <script> element

    scriptEl.type = "text/javascript";

    scriptEl.textContent = xhr.responseText;              // set its content to the response text which is the snippet of code you requested (please take a look at this other SO answer https://stackoverflow.com/a/6433770)


    document.body.appendChild(scriptEl);                  // append that element to the body, the code will then be executed

};


// probably a good idea to handle xhr.onerror as well in case something goes wrong


xhr.send();


查看完整回答
反對 回復 2022-10-08
  • 1 回答
  • 0 關注
  • 77 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號