0

我正在尝试使用内联内容通过灯箱输入登录表单,但是,如果用户没有 javascript,我希望能够优雅地降级。根据 fancybox 文档,我的锚标记应该有一个href要显示的内容的 ID,如下所示:

<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或其他一些灯箱解决方案来实现这一点?

4

1 回答 1

1

删除内联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的用户获取的是普通链接,其他人获取的是hash链接。

于 2012-02-23T03:34:34.707 回答