2011-02-08 130 views
5

我有一个带有一些链接的网页,我需要通过jQuery拦截链接单击事件。任务完成的很好,但后来出现了一个问题:如果用户点击一个链接,当JavaScript没有完成加载,它链接到另一个页面(这是一个错误)。防止在页面加载时点击链接

我试图找到一种方法来禁用页面加载完成之前,链接点击,但最好的解决办法,现在是我必须补充onclick="return false;"到我的链接,这是不是很优雅。有没有更好的解决方案?

感谢您的帮助,

+3

为什么不派HREF作为另一个属性,然后复制,当链路准备好被点击属性HREF? – jrockway 2011-02-08 03:32:02

+0

@jrockway:感谢您的建议,但我认为这样做并不方便。 – 2011-02-08 04:53:10

回答

0

这是我制定的一个解决方案:使用放置在链接前面的masker来防止点击事件。

<div class="LinkMasker"></div> 

.LinkMasker { 
    position: absolute; 
    z-index: 999; 
    width: ...px; 
    height: ...px; 
} 

页面加载&我的活动结束后都注册了,去掉掩蔽物:

$('.LinkMasker').remove(); 
+0

我知道这是少数,但Javascript关闭的用户无法以这种方式使用您的网站。 – kapa 2014-08-07 09:20:36

5

你可以尝试使用的初始化脚本:

<script language="javascript"> 

var loaded = false; 

function SetLoaded() { loaded = true; } 

window.onload = SetLoaded; 

</script> 

那么你可以添加到onclick="return loaded;"您的href。由于在页面加载之前加载将不成立,因此应该禁用添加了该功能的链接。

1

让jQuery在你的document.ready()的链接中设置hrefs。也许用'#'加前缀你的链接,并让jQuery去掉它们。

+0

谢谢,虽然我不认为这是好的做法:( – 2011-02-08 05:07:01

3

今天,所以我做了[R & d,并计算出它的另一种方式,我面临着这个问题。 document.readyState将在页面加载完成后“完成”,因此您可以检查其值。

if(document.readyState=='complete') 
{ 
    //// call script or do anything which you want to do. 
}