簡體   English   中英

使用 jQuery 加載外部腳本且無異步

[英]Loading external script with jQuery and no async

我需要在兩秒鍾后在頁面上的特定位置加載一個外部腳本並且沒有異步。 換句話說,腳本需要在兩秒后准確地加載到我在頁面 HTML 中放置的位置。 當我使用以下代碼時,出現控制台錯誤:

無法在“文檔”上執行“寫入”:除非顯式打開,否則無法從異步加載的外部腳本寫入文檔。

setTimeout(function(){
   $.ajax({
        url: 'https://example.com/embed.js',
        async: false,
        dataType: "script",
    });
}, 2000);

如果我將 async 設置為 false,為什么會出現該錯誤?

如果我將 async 設置為 false,為什么會出現該錯誤?

async屬性僅適用於 XHR 請求(並且它觸發的功能無論如何都已被棄用)。 您說dataType: "script",因此請求是通過將<script>元素注入文檔而不是使用 XHR 來處理的。

我需要在兩秒鍾后在頁面上的特定位置加載一個外部腳本並且沒有異步。 換句話說,腳本需要在兩秒后准確地加載到我在頁面 HTML 中放置的位置。

鑒於外部腳本使用document.write ,我認為這是不可能的。

您應該改寫它以使用 DOM 操作。

通過使用document.currentScript ,您可以確定<script>元素在 DOM 中的位置並在那里插入內容。

正在加載的腳本用於第三方表單(Kajabi),我無法更改他們使用 document.write 的方式

對此討厭的方法是讓它寫入一個設置為display: none in CSS 的元素,然后在計時器上切換顯示值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM