Thickbox
Cody Lindley 刚刚发布了 Lightbox/Greybox 的一个全新版本,名为 Thickbox。此版本在其他库的基础上提供了一些很棒的附加功能。具体来说,此版本完全是非侵入式的 - 它使用自然的 href、src 和 title 属性来填充弹出框。即使你没有启用 Javascript,它仍然可以自然地运行。它还可以动态加载 HTML 块并在覆盖层中显示它。总而言之,这是一个很棒的版本,最重要的是它使用了 jQuery 来将所有这些整合在一起。所以,快去看看吧,玩一玩,然后告诉 Cody 你对它的看法!
我喜欢它 - jQuery 在像这样基于它的项目中变得越来越有用。
@Andre Lewis - 感谢 Andre。如果你喜欢基于 jQuery 的东西,你应该看看为 jQuery 和 Prototype 提供的简单 DOM 创建功能。
链接
http://mg.to/2006/02/27/easy-dom-creation-for-jquery-and-prototype
@Andre - 哎呀!我的意思是链接到这篇文章。
http://mg.to/2006/01/25/json-for-jquery
抱歉。John,请随意修复我的愚蠢。
太棒了。这正是我需要的。
Cody,很棒的工作,非常及时。
使用 ajax load 函数来拉取文档的部分内容很好,但是(总有但是),如果文档具有 doctype 和所有标记,会不会更易于访问?
目前是否可以使用 jQuery 返回文档的完整 HTML,然后选择 body(或其他)标记之间的部分内容以插入到 ajax 的情况下?
看到这个脚本和 jQuery 协同工作以实现正确的可访问语义网络,而不是部分正确的不可访问网络(太落伍了),真是太棒了。
致 Abba Bryant
一种方法是使用动态语言(PHP 或 Ruby)生成 Thickbox 的 HTML。然后,你可以让脚本检测请求是 ajax 还是普通的 get,并分别返回 HTML 片段或完整的有效 XHTML 文档。
在 Ruby on Rails 中,这就像在你的控制器中添加类似这样的内容一样简单
if request.xhr?
render ‘stuff’, :layout => :none
else
render ‘stuff’
我相信这也可以在 PHP 中完成。
@abba - 可以使用 javascript 中的正则表达式在这些页面加载时移除或保留(无 js)这些内容。我正在考虑在下一个版本中添加这个功能?
非常酷的脚本。我们下一版本的应用程序肯定会使用它。
有人遇到过 Thickbox 的问题吗?我们的 Thickbox 运行良好,并且实现了我们想要的功能 - 然而 - 间歇性地,当点击缩略图时,我们会看到新的图像出现在一个带有白色背景的新浏览器窗口中 - 如果我们返回并再次选择图像,一切正常。
这并非由特定的图像或页面造成的。
@Scott_S: 这种情况发生在你点击 Thickbox 链接之前页面还没有完全加载时。如果 javascript 还没有为链接添加 onclick 事件,它们就会回退到只提取原始文件。
这在每个非侵入式链接增强脚本中都会发生:Lightbox、Greybox 等等。
唯一的方法是让你的页面内容足够有趣,让用户在点击东西之前多花几秒钟。:)
对于你提供的示例页面,如果你用压缩版的 jQuery 文件替换 jQuery 文件,似乎会在 Firefox(1.5.0.4/Win)中产生一个奇怪的显示错误。点击两个缩略图中的一个会导致屏幕右侧出现闪烁/刷新。你知道两种 .js 文件之间可能导致这种差异的原因吗?
@Scott S.: 我在使用 Firefox/Win 时也遇到了同样的问题,每次页面重新加载(或清除缓存)时都会出现,无论我在页面加载后等待多长时间。点击后退后,它就会一直工作(直到我清除缓存并刷新页面)。
我尝试从一个 div 内调用 thickbox。该 div 的内容使用 jQuery 的 load 函数动态加载。
它失败了。
如果我从 div 外部调用 thickbox,它可以完美地创建,但是如果从动态加载的 div 内部调用,它就像其他链接一样,会重定向到目标页面。
有人知道如何解决这个问题吗?如何从动态加载的 div 内部调用 thickbox?
我真的很喜欢你的 Thickbox,并且在我的网站上使用了它。感谢你出色的工作。