2013-07-05 21 views
0

我必須將所有的JavaScript文件打包成一個文件。這是要求。現在我已經設置了幾個grunt任務來連接我的javascript文件。場景:級聯Javascript,jQuery執行

jquery.js 
jquery.plugin1.js 
custom.js 
>> combined.js 

在我的開發設置我使用yepnopejs加載所有腳本和EXCUTE他們完成。這工作正常。我的所有javascript代碼都能正常工作,除了連接文件。看來,jQuery執行得太早,所以我的一些選擇器不匹配執行標記。

development 
$('input, select').not(':hidden').each(function(){...}); 
>> length: 21 items 

工作

production (concated file) 
$('input, select').not(':hidden').each(function(){...}); 
>> length: 0 items 

不工作。

初始化

development 
yepnope([ 
    { 
     load: 'http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js' 
    }, 
    { 
    load: 'js/jquery.plugin1.js', 
    complete: function() { 
     onReady(); 
    } 
}]); 

production 
$(window).load(function(){ 
    onReady(); 
}); 

我試過也$(document).ready(function)等。我很確定我的初始化部分已損壞或完全錯誤。

+0

你能將你的Javascript包含位置移動到頁面底部嗎?還是會把一切都打破? – Mgetz

+0

Concated?你的意思是串聯? – j08691

+0

標記不能在這裏修改@ mgetz – onigunn

回答

1

在這種情況有幾個步驟,應該幫助調試正在發生的事情:

  1. 嘗試的JavaScript基準移動到頁面的底部,這是否解決?
    1. 是否使用腳本引用的async or defer屬性來解決問題?
  2. 驗證腳本"use strict"下工作,一個closure內,並通過JSLint
  3. 是否$(document).ready()工作?
  4. 如果第1步工作並且第2步和第3步沒有,請尋求修改標記的權限,因爲雖然第2步提供的修復無疑會使事情更可靠,但它們不會解決問題。