2016-02-13 144 views
0

我有,我通過Ajax調用加載一個div的應用程序,或使用jQuery從文件加載腳本的最佳方式是什麼?

$('#cont').load("something.html"); 

<div id="cont"> 
</div> 

something.html樣子:

<script src="./js/test.js"></script>  
<table> 
    .......blah....blah 
</table> 

我得到: jQuery的1.12.0.min .js:4主線程上的同步XMLHttpRequest已棄用,因爲它對最終用戶的體驗有不利影響。如需更多幫助,請查詢https://xhr.spec.whatwg.org/

我一直在進入test.js文件,只是剪切和粘貼腳本到something.html的開頭,但這是很多多餘的腳本。許多網頁使用它,這成爲一個痛苦要維護。

有沒有一種方法可以讓腳本在單獨的.js文件中加載?

+0

喜詹姆斯,這是最好的:,因爲這是它是如何正常完成。 – unixmiah

+0

這取決於。你可以使用像AMD這樣的裝載器,你可以將腳本與瀏覽器進行綁定,你可以創建一個'

2

試着將其分解爲兩個操作。在您的網頁,與外部JS文件的引用加載使用普通腳本元素的JS腳本:

<script src="./js/test.js"></script> 

然後,做一個AJAX調用來獲取內容並加載到AJAX調用的目標DIV成功經理。要做到這一點jQuery的最簡單的方法是用$.get()

<script> 
    $.get('/path/to/something.html', function(data) { 
     // set the contents of #cont to the HTML returned from the AJAX call 
     $('#cont').html(data); 
    }); 
</script> 
+0

工作!謝謝! –

1

如果同步執行是沒有必要的腳本,你可以嘗試:

<script src="./js/test.js" async="async"></script>  
<table> 
    .......blah....blah 
</table> 

這樣做意味着,有沒有保證您的腳本將在以下<table>被解析並呈現之前執行。設置async屬性表示這可以按任何順序發生。

HTML5規範是here

異步並推遲屬性是表明 腳本應該如何執行布爾屬性。如果src屬性不存在,則不會指定延遲和異步屬性 。

使用這些 屬性可以選擇三種可能的模式。如果異步屬性存在,那麼腳本將是 異步執行,只要它是可用的。如果async 屬性不存在,但存在defer屬性,則在頁面完成解析後執行 腳本。如果 屬性都不存在,則在用戶代理繼續解析頁面之前立即提取並執行腳本 。

Support is pretty good現代瀏覽器:

  • IE 10+
  • FF 3。6+
  • 鉻8+
  • 的Safari 5.1+
  • 歌劇15+
+0

優秀的解釋!當我打到15時,我會努力+1。 Thx –

+0

@JamesBailey很高興這是啓發:) – user193130

相關問題