我正试图通过一个使用内联内容的灯箱将其放入一个登录表单中,但是,如果用户没有javascript,我希望这一点能得到适当的降低。根据fancybox文档,我的锚标签应该有一个要显示的内容ID的href
,如下所示:
<a href="#fancybox-logon">Log On</a>
<div id="fancybox-logon" style="display:none;">My log on form!</div>
这很好,直到有人在关闭JavaScript的情况下访问。然后他们被链接到不存在的东西。在我看来,一个更好的解决方案是这样标记:
<a href="logon.php" data-lightbox="fancybox-logon">Log on!</a>
<div id="fancybox-logon" style="display:none;">My log on form!</div>
这样,如果出现故障,用户将被引导到外部登录页面。有没有一种方法可以通过fancybox或其他灯箱解决方案来实现这一点?
删除内联style="display:none;"
<a href="#fancybox-logon">Log On</a>
<div id="fancybox-logon">My content!</div>
用javascript/jQuery隐藏它:
$('#fancybox-logon').hide();
这样,如果禁用javascript,则内容仍然可见,并且锚点将正常工作。
如果您觉得js被禁用时它是多余的,并且您对此感到担忧,则可以使用javascript创建链接(请记住,这是一个利基案例,因此这更像是一种优化)。
$('#fancybox-logon').before('<a href="#fancybox-logon">Log On</a>');
如果您想在禁用js时使用指向外部登录页面的链接,只需更改href
即可。示例:
<a href="logon.php" data-lightbox="fancybox-logon">Log on!</a>
<div id="fancybox-logon" style="display:none;">My content!</div>
$('[href="logon.php"]').attr('href', '#fancybox-logon');
通过这种方式,没有js的用户可以获得普通链接,而其他人则可以获得哈希链接。