2014-11-05 77 views
2

我在我的網站中有兩個頁面,都顯示一個模式窗體。這些頁面正在使用jModal插件,並且一切正常。jquery文檔準備得太慢了

我遇到的問題如下。

一頁,一切都很好,表現很棒。

在第二頁上,一切都是一樣的,除了它有一些廣告,導致一個小的性能影響。

這個命中是可以接受的,但由此產生的延遲可以讓訪問者在模態窗口顯示之前點擊頁面上的鏈接。因此訪客可能會錯過模式窗口。

代碼在$()。Ready中,我相信這是導致問題的原因,因爲頁面必須等到廣告服務器完成廣告投放。

我刪除了$()。Ready,但是這只是導致代碼根本不能執行。

有沒有辦法鎖定頁面,直到doc準備好執行?

+0

DOM準備就緒(例如,'$(function(){})'將在* DOM準備好後立即觸發*。它不應該等待廣告。問題可能是前面的代碼延遲了DOM準備好的代碼因爲它可能沒有提早運行,所以將DOM準備好的處理程序移動到廣告腳本之前 – 2014-11-05 11:42:17

回答

0

謝謝大家的幫助。

最後,我添加了一個覆蓋,快速,簡單,沒有工作。

1

一種方法是在您的網站上添加一個覆蓋圖,該覆蓋圖始終存在,您可以使用$()刪除它。準備就緒將會處於最佳狀態並且不允許它們點擊。

+0

如果你想允許沒有JavaScript的人優雅地回落,那麼這樣的東西也可以放在'noscript'標籤中,所以它不會出現的瀏覽器,從來沒有開火'ready'事件 – 2014-11-05 11:41:02

+0

這是使用jQuery的常見問題? – gilesrpa 2014-11-05 11:41:04

1

我會提供這種替代選項,因爲它是我通常選擇的選項。

文件最初看起來與您的jQuery觸發時的區別可以通過樣式來模仿。

例如(你的情況),你有鏈接暴露給用戶,同時等待jQuery來隱藏它們(以迂迴的方式)。首先用CSS隱藏它們,然後作爲初始jQuery的一部分顯示它們(一旦它被完全初始化)。

我在用戶界面上有一個swiper的問題;我有一個巨大的清單,其寬度將根據swiper插件設置(初始化時)。相反,我只是在我的CSS文件中設置了一個很大的寬度(故意過度補償),然後讓swiper插件做它的東西。一個典型的用戶無法分辨。

仍然不是傻瓜,但在這種情況下,CSS比等待jQuery快很多,與其他選項不同,您不需要添加額外的疊加層。

1

將模態窗口放在頁面頂部,立即在doc下面準備好