2014-04-04 99 views
1

我一直在使用自定義擴展「快速查看」對每一件產品像這樣 enter image description here奇怪的問題jQuery中,Magento的

當圖像懸停,該鏈接將顯示。當點擊該鏈接時,會以大圖顯示詳細描述。它在產品列表頁面中運行良好。但在主頁上,我有錯誤,如「類型錯誤:d是未定義」在img_height.js線7號

enter image description here

我檢查了該文件,並給予警惕,以找到什麼值保持d我收到了一個警告,如[對象對象](發出多個警報)。

d=Element.retrieve(a,"prototype_event_registry",$H())); 
alert(d); //undefined d 
var e=d.get(b); 
Object.isUndefined(e)&&(e=[],d.set(b,e)); 

關閉警報框後,勾選複選框「阻止此頁面創建其他對話框」。

在那個時候,我得到了錯誤,如「NS_ERROR_NOT_AVAILABLE:」

enter image description here

但我只在首頁上有提示框,而不是在產品列表頁面。在發出警報之後,Quick Look也能在主頁中很好地工作。但是,如果我刪除警報,我再次得到了同樣的錯誤「類型錯誤:d是未定義」

而且也介於兩者之間,我得到了最錯誤的像「$ .browser是不確定的」,「類型錯誤$(。 ..)。live不是一個函數「。我已經通過添加此腳本解決了這些問題"<script src="http://code.jquery.com/jquery-migrate-1.0.0.js"></script>"

但我無法解決真正的問題。這個問題大約耗時3天。儘管如此,我還是不明白爲什麼會發生這種情況。

如果有人有一個想法,請救我的傢伙.....

+0

'活着不是一個函數'...活着是在JQuery 1.9之後貶值的 - 你可能在之後使用了一個版本?使用'.on'替換live .. https://api.jquery.com/on/ –

+1

感謝您的快速回復@JFit。我已經通過添加jquery-migrate-1.0.0.js腳本文件解決了這個問題 – DRAJI

+0

chrome的控制檯說什麼? – pguardiario

回答

1

當這種事情發生在我身上它可以是:

一)由於產品頁面加載一些額外的腳本這些不在主頁上。在這種情況下,請研究產品頁面的頁面源,並檢查所有加載的腳本和所有內聯腳本。比較這與主頁的頁面源代碼是非常小心的區分不同版本的jQuery,並確保jQuery總是.noConflict(),這樣Magento的prototype.js可以擁有$。也許主頁有一些其他模塊,可以在Quick Look腳本之前或之後加載不同版本的jQuery。

或者

b)由於腳本需要一些HTML元素不存在的HTML頁面。例如,產品頁面可能有一個DOM元素<div id="my-special-quick-look-box">,JavaScript會引用它,但是在主頁上可能缺少這個元素或者出現意想不到的祖先 - 子女關係。或者,div存在,但CSS意味着它沒有高度,或者缺少一些JavaScript試圖引用的屬性。

或者

c)若所有的JavaScript被合併成一個文件,它改變了運行秩序,而且往往是運行腳本的時候,這將是以後有一些DOM元素是不存在的。因此,如果您已將JavaScript組合在一起,請注意運行順序並使用DOM事件來了解什麼時候已加載,然後在正確的時間運行JavaScript。

這是我的經驗。也許它會幫助你找到錯誤。

+0

感謝您的迴應。讓我檢查這些可能性。 – DRAJI

+0

當我把這個文件(img_height.js)產生一個錯誤,如「d是未定義的」,其工作的警報。當我刪除該警報時,它不起作用 – DRAJI

+0

所以也許這與時間有關。 onLoad()事件觸發後你運行img_height.js嗎?您是否需要等待圖像加載並在DOM中呈現其高度以供image_height.js使用?而不是alert(),你可以使用定時器來創建一個小延遲(僅作爲一個測試)。如果是由於時間原因,請找到DOM事件來偵聽,然後在適當的時候執行您的代碼。 – Malachy