[英]Dynamically and synchronously load JavaScript file from a different domain
我想通過代碼同步包含來自不同域的JavaScript文件。 這意味着使用同步XMLHttpRequest
將無法正常工作。 我還想避免使用document.write
因為我的代碼將在文檔完全加載時執行。 這甚至可能嗎? 是否有任何現有的JavaScript庫支持該功能?
基本上我希望這個工作:
<script type="text/javascript">
$(document).ready(function() {
load("path_to_jQuery_UI_from_another_domain");
console.log(jQuery.ui.version); //outputs the version of jQuery UI
});
</script>
編輯:我的想法是創建一個jQuery插件,根據啟用的功能加載其JavaScript文件。 jQuery插件可以隨時初始化,這意味着沒有document.write。 完全可以異步加載JavaScript文件,但人們希望在調用$("selector").something();
之后完全初始化它們的插件$("selector").something();
。 因此需要在沒有document.write的情況下加載同步JavaScript。 我想我只是想要太多。
同步加載文件的唯一方法是document.write腳本標記到您的頁面。 這通常被認為是一種不好的做法。 可能有更好的方法來做你真正想要的事情,但是,本着透明的精神:
document.write('<script src="http://otherdomain.com/script.js"></'+'script>')
應該做的伎倆。 您必須轉義結束腳本標記,以便解析器不會關閉您編寫的腳本標記。
**請注意,您無法動態加載包含document.write
腳本
你應該可以使用.getScript()
編輯:跨域請求總是在jQuery中異步加載。
一個名為YepNope
的大型庫可用於從任何位置加載javascript依賴項 - 由yayQuery播客的成員開發。 它可以在這里找到:http: //yepnopejs.com/
LABjs.js,是一個不錯的圖書館。 我用它效果很好。
無法在URL上同步執行腳本。 進一步注意,當涉及網絡(甚至文件系統!)時,同步任何東西都是一個壞主意。 某個人,某個時候,某個地方將處於一個緩慢的系統,或一個緩慢的網絡,或兩者兼而有之,突然間你只是在這個過程中掛起他們的UI。
同步很糟糕。 異步回調很好。
請注意,作為最壞情況的黑客,您可以使用自己的函數覆蓋$
,該函數返回具有恰當屬性的對象,並且您可以半懶惰地評估所有實際調用。 如果你開始依賴於立即執行調用,或者他們的執行與參數的評估混合在一起,這當然會中斷,但在最壞的情況下,它並非完全不可信。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.