2011-11-14 60 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进行模拟时,它确实有效。 –