2014-12-04 17 views
1

我正在用Laravel在PHP中開發一個網頁。我想爲我的javascript文件使用屬性「延遲」或「異步」,但我有一些問題。 在每一個文件,我打開其中包含一個標題:如何使用內嵌JavaScript的延遲程序

{{ Html::script('js/jquery.js', array('defer' => 'defer')) }} 
{{ Html::script('js/bootstrap.min.js', array('defer' => 'defer')) }} 

{{ Html::script('js/pjax.js', array('defer' => 'defer')) }} 
{{ Html::script('js/jquery.cookie.js', array('defer' => 'defer')) }} 
{{ Html::script('js/blur.js', array('defer' => 'defer')) }} 
{{ Html::script('js/scrollbar.js', array('defer' => 'defer')) }} 

<!--Form--> 
{{ Html::script('js/parsley/parsley.remote.js', array('defer' => 'defer')) }} 
{{ Html::script('js/parsley/parsley.js', array('defer' => 'defer')) }} 
{{ Html::script('js/parsley/es.js', array('defer' => 'defer')) }} 
{{ Html::script('js/icheck.js', array('defer' => 'defer')) }} 

<!--Funciones--> 
{{ Html::script('js/funciones.js', array('defer' => 'defer')) }} 

如果我給他們的屬性異步時,不能正常工作,因爲他們中的一些是模塊化的。 所以我嘗試了defer屬性,並且我沒有這個問題,但是現在我遇到了內聯javascript的問題,因爲它調用了頭的一個函數。 (這是在頁面的底部)。

<script type="text/javascript"> 

window.addEventListener('popstate', function(e) { 
    eval(document.getElementById("script_biblioteca").innerHTML); 
}); 


//Scripts on back/forward 
section = 'biblioteca'; 
url_section = "{{Request::root()}}/"+section+"/"; 

activar_menu('#menu_biblioteca'); 
buscador('#dinamic_search', '#main', section); 

</script> 

和錯誤:

ReferenceError: $ is not defined 
ReferenceError: activar_menu is not defined 

我該如何解決呢? 而且,我正確使用「延遲」屬性?

+0

可能重複(HTTP://計算器.com/questions/20180556/defer-inline-javascript-execution) – jsalonen 2014-12-04 19:26:42

+0

這不一樣,因爲我不能使用這種方法。我有一個標題,我用在每一頁和另一邊,我有每個頁面的特定功能。所以我不能把特定的功能放在最上面,因爲每個頁面的頂部都是一樣的。還因爲我加載視圖,並且當我加載此頁面的視圖時,我只加載了div main的包含,因此我無法訪問頁面的其餘部分。 – proyecthd 2014-12-04 19:34:23

+0

而建議的解決方案不使用延遲或異步,所以我猜是不那麼「高效」 – proyecthd 2014-12-04 19:37:11

回答

0

一種選擇是使用Gulp連接單個腳本中的所有腳本。

這樣你就不會有這個問題,也不必打開多個瀏覽器連接來下載多個js文件。

gulp concat scripts in order?

而且你當您嘗試使用jQuery下面的消息,但它尚未加載:

ReferenceError: $ is not defined 
[推遲內嵌的JavaScript執行?]的