2011-11-14 100 views
0

我正在開發一個項目,我一直在運行這個特殊的問題,即.load在Google Chrome中不起作用。下面是JavaScript的:.load jquery不能在chrome中工作

function link1() { 
    $('#loadarea').html('loading.....'); 
     setTimeout('link1_go()', 850); 
    } 
    function link1_go() { 
     $('#loadarea').load("regular.html"); 
     $('#loadarea').hide().fadeIn('slow'); 
    } 

而這裏的點擊div來調用操作:

<div id="link1" class="clickableload" onclick="link1()"> 

然後還有容器將其加載到:

<div id="loadarea"></div> 

它的工作Firefox和IE但不是在鉻。任何建議傢伙?

+0

,能得到任何的js錯誤?網絡選項卡向您顯示什麼內容(請求正在發送?) –

+0

如果您註釋掉隱藏/淡入淡出並繞過超時直接調用'.load()'會發生什麼? (只是試圖幫助縮小問題的範圍) – nnnnnn

+0

不要將字符串傳遞到'setTimeout',這只是一個壞主意。相反,總是傳遞一個函數引用(在這種情況下,'setTimeout(link1_go,850);'@Jacob指出)。 –

回答

4

嘗試更改您的setTimeout呼叫。當您使用setTimeout的字符串參數時,會調用瀏覽器的eval函數,這可能不符合您的期望,特別是如果link1_go不是全局函數。代之以:

setTimeout(link1_go, 850); 
+0

變量作用域是一種在瀏覽器中表現完全不同的東西。看到這篇奇妙的文章:http://blog.rakeshpai.me/2008/10/understanding-eval-scope-spoiler-its.html – Jacob

+1

你是對的,@ T.J.Crowder。編輯。 – Jacob

0

我最近對「事件序列」非常小心。只要有可能,我會確保這些語句只按照我想要的順序加載。 Chrome在我的主要調試Web瀏覽器中沒有遇到任何問題。

對於所示的情況下,我建議如下修正:

function link1() { 
    $('#loadarea').html(function() { 
     setTimeout('link1_go()', 850); 
     return '<p>loading.....</p>'; 
    }) 
} 

function link1_go() { 
    $('#loadarea').fadeOut().load("regular.html").fadeIn('slow'); 
} 

Since the "loadarea" is already displaying "loading ... "; a fadeout and a fadein would be more elegant then hide() and fadeIn. 

Furthermore, for the present request, I would get away with link1_go completely: 

function link1() { 
    $('#loadarea').html(function() { 
     setTimeout("$('#loadarea').fadeOut().load('regular.html').fadeIn('slow')", 850); 
     return '<p>loading.....</p>'; 
    }) 
} 
+0

我欣賞所有的輸入。我發現了這個問題。看來,它會工作,當我用localhost嘗試它。我在本地打開html文檔(除了htdocs或www文件夾以外的任何地方),它不起作用。但是當我使用xampserver進行模擬時,它確實有效。 –