2012-07-11 62 views
0

我遇到了Ruby on Rails中的一個奇怪的錯誤。我試圖實現Uploadify JQuery庫來處理使用flash對象的多個上傳。我正在使用Ajax加載的選項卡上實現此功能。之前,我在我的Uploadify js文件的javascript_include_tag與受Uploadify影響的相關HTML相同的ajax頁面上。 但是,這產生了一些非常奇怪的結果。有時候,在該頁面上對我的Uploadify函數的調用將會起作用,而其他時候則會完全失敗。如果在這種情況下,它通過在標籤之間切換並在第二次或第三次檢索Ajax頁面時無效,它通常會解決問題。奇怪的是,如果我用Firebug檢查了HTML,即使Javascript功能正常工作,也無法看到JavaScript鏈接,儘管我確實看到了該文件的網絡請求。我嘗試將uploadify的javascript_include_tag移動到我的應用程序佈局中的head標籤,但隨後Uploadify flatout停止工作。Rails 3應該將所有Javascript存儲在頭標記中?

當我通過Ajax頁面上的鏈接標記將uploadify功能推送到我的生產服務器時,問題仍然存在,但頻率較低。事實上,我只注意到它幾次。此外,這種功能在任何其他瀏覽器時期都不再適用,只是Firefox,但這可能是一個完全不同的問題,我會弄清楚(即使Javascript應該是獨立於瀏覽器的....)。

這裏是我的頭標記看起來像當我試圖包括它的uploadify電話:

%head 
    %title Virtual Robot Games 
    = stylesheet_link_tag 'style.css','web_app_theme.css', 'events.css', :media => 'screen'  
    = csrf_meta_tag   
    = javascript_include_tag 'jquery' 
    = javascript_include_tag 'prototype' 
    = javascript_include_tag 'noconflict.js' 
    = javascript_include_tag 'effects.js' 
    = javascript_include_tag 'calendar_date_select' 
    = javascript_include_tag 'highlight' 
    = javascript_include_tag 'textcounter' 
    = javascript_include_tag 'scriptaculous.js' 
    = javascript_include_tag 'collapsible.js' 
    = javascript_include_tag 'bbhelp.js' 
    = javascript_include_tag 'swfobject' 
    = javascript_include_tag 'application' 
    = javascript_include_tag 'uploadify' 

額外的信息:

我同時使用Prototype和jQuery和他們不斷與另一個衝突,但我通常能夠解決這個問題。我從來沒有見過這兩個庫衝突的地方,而且我只有一些JQuery,有時候它只是工作。通常情況下,如果發生衝突,它將不起作用。

編輯 其實我覺得我想通了這個問題,我使用的是jquery-rails寶石,我忘了,包括我的Uploadify js文件jQuery庫。相反,我有一個內聯的googleapi鏈接。使用包含電話替換google api鏈接解決了問題。儘管我的原始問題是,我的JavaScript鏈接是否應該存儲在我的頭標記中?

+0

只要問一下,我會盡量準備這個問題的臨時實例。 – Noz 2012-07-11 16:08:44

回答

1

「雖然我原來的問題是站着,我的JavaScript鏈接是否應該存儲在我的頭標記中?

javascript_include_tag只是一個幫手,它在html標記中生成<script></script>元素。因此,您可以在</body>結束之前或頁面中的任何位置添加它。你也可以在部分中使用它。另一種常見做法是在模板/部分中使用content_for,並在佈局中使用相關標籤,例如<head>部分。它的目的是隻加載相關的js,當只有一部分網站是JavaScript密集型的時候(可能是圖表/圖形/報告等),而其他網站模塊根本不使用那個js庫(但所有模塊共享共同佈局)。

所以總結一下,javascript_include_tag的位置更依賴於HTML頁面上的JavaScript執行規則。使用它作爲<script></script>元素。

+0

我知道它做了什麼,這是一個很好的實踐相關問題,以避免範圍/性能相關的問題,雖然我可以在這方面更清楚一點。所以,如果我得到這個權利,我應該只加載JavaScript庫的相關/使用? – Noz 2012-07-12 18:39:19

+0

是的,沒錯。對不起,如果我說明顯。 – 2012-07-12 19:30:59

相關問題