代码之家  ›  专栏  ›  技术社区  ›  Burt

jquery在页面加载前禁用链接

  •  2
  • Burt  · 技术社区  · 15 年前

    我有一个jquery弹出窗口连接到一个链接。如果单击链接时页面未完全加载(即.js文件),则会在浏览器窗口中打开,而不是弹出窗口。

    我正在考虑禁用/隐藏链接,直到页面被加载。

    处理这个场景的最佳实践是什么?您有任何代码示例吗?

    4 回复  |  直到 9 年前
        1
  •  5
  •   Poonam Bhatt    15 年前

    首先将链接放在DIV部分,并使该DIV隐藏

    <div style='display:none' id='LinkId'><a href=''>click</a></div>
    

    现在把这个代码写在头部分

    <script language="javascript">
    
    $(document).ready(function() {
        $('#LinkId').show();
    });
    
    </script>
    
        2
  •  1
  •   RoToRa    15 年前

    实际上,这是一个很好的例子,为什么在HTML代码中直接分配事件处理程序并不一定是一件坏事,尽管很多人都这么说。

    如果你使用 <a href="" onclick="myClickHandler()">Link</a> 链接的可见性和您可以使用它的时间之间没有差距。它提高了可用性,因为用户不需要等待页面完全加载,并且在看到链接时仍然使用它。

        3
  •  0
  •   The Billionaire Guy    9 年前

    我也有同样的问题,这里是我如何解决的。

    除了我真正的链接外,我还必须创建一个虚拟链接,即

    <!--fake link is visible by default-->
    <li class="li_1">
    <a class="dropdown-toggle" href="my_real_link_not_popup.html">Compose</a>
    </li>
    
    <!--original link is hidden with the hidden class by default-->
     <li class="li_2 hidden">
     <a class="dropdown-toggle ajax-popup-link_write" id="write_main_a" href="my_real_link_is_popup.html">Compose</a>
     </li>
    

    我的剧本是这样写的:

    $(document).ready(function()
    {
        //prevent event from being fired before page load
        $(".li_1").addClass("hidden");
        $(".li_2").removeClass("hidden");
    });
    

    所以页面加载了假链接, onpage load == "finish" 然后隐藏假链接,使真实链接可见。

    唯一的缺点是用户必须在浏览器中启用Java脚本,否则无法访问弹出窗口。但是从好的方面看,假链接仍然可以重定向到与弹出窗口内容相同的另一个页面。 眨眼

    希望这有帮助

        4
  •  -1
  •   alexandresaiz    10 年前

    我也遇到了类似的问题,一个链接的Href被服务器填充,并且在页面加载到URL之前,Href被修改为us/en或/de/de,

    因此,如果我们在页面完全加载之前单击链接,它将转到不完整的URL,因此我将无法找到页面。

    所以我的解决方案是: 尽快从客户端添加onclick=“event.preventDefault()”,然后在URL更新时将其修改为onclick=“”。

    所以这个问题得到了解决,当URL不完整时,单击就不会发生。