只有在加载javascript后,链接才会变为可点击

时间:2013-03-05 05:36:22

标签: javascript html

我有一个“登录”链接,可以在灯箱式iframe中打开登录页面(login.php)。

一般来说它工作正常,但是如果观众的互联网连接非常慢,那么他们有可能在加载灯箱javascript之前点击登录链接。然后导致login.php加载到窗口本身而不是灯箱iframe,这是一个问题。

那么,是否有可能延迟该链接的点击能力,直到特定的.js文件加载完毕为止?即,当页面首次加载时,“登录”不可点击,然后在加载javascript后,“登录”成为活动链接。

或者 - 这个问题的最佳解决方案是什么?

谢谢! 〜丹尼尔

5 个答案:

答案 0 :(得分:2)

是。你可以拥有类似懒惰装载机的东西。

<a href="#" data-href="login.php" class="lazy">log in</a>

现在,类lazy的元素将具有虚拟非工作链接。在窗口加载后,我们将替换正确的链接,以便它可以正常工作。

$(document).ready(function(){
  $('.lazy').removeClass('lazy').attr('href', $(this).data('href'));
});

此外,如果您认为这可能是一个问题,您可以隐藏登录按钮并在文档加载后显示它,如下所示:

<a id="login" ... style="display: none;">Login</a>

JavaScript:

$(document).ready(function(){
  $('#login').show();
});

答案 1 :(得分:1)

查看Document.Ready

  

在DOM准备就绪后执行的函数。

代码示例:

$(document).ready(function() {
    var login = $("<a href='login.php' >Login</a>");
    $('#elementName').append(login);
});

或者在做任何事之前检查某些事物是否存在if (typeof something != 'undefined')

答案 2 :(得分:0)

没有代码,很难说。但是,我最好的猜测是,它正在等待文档加载,然后再引导您正在使用的灯箱。这对灯箱来说是正确的。

正如@Matt Ball在你的帖子中的评论所暗示的那样,你需要有一个非javavascript选项,在页面加载时用更漂亮的javascript选项替换。

答案 3 :(得分:0)

关于脚本的一个简单信息。 始终将脚本放在身体标签下以便快速加载。如果您想要快速响应,请不要使用head标记。

答案 4 :(得分:0)

@Praveen Kumar的解决方案有效,但这里有一个更简单的方法,不需要真正“懒加载”链接:

HTML:

<a href="login.php" class="lazy">log in</a>

JS(在加载灯箱后将其添加到灯箱脚本中):

$('.lazy').removeClass('lazy');

或者没有jQuery(简化示例):

document.querySelectorAll('.lazy')[0].className='';

CSS:

.lazy { -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; }