我有一个URL,我想在FancyBox(或任何其他叠加类型弹出窗口)中打开.我不知道URL是否好,所以我想测试一下.如果无效 - 我不会将fancyBox插件附加到该特定URL,它将只是一个常规链接.如何在插入插件之前测试URL?尝试做类似的事情:
$("a.overlay").each(function() { var xhr = $.get(this.href, function(data, status) { // never executed in case of a failed request }); if (xhr.status && xhr.status === 404)) { // not good, do nothing } else { // can attach plugin here } });
问题是,xhr
并不总是定义,因为JS不等待请求完成.类似地,我不能使用回调函数,因为它似乎没有执行,以防请求失败(我可以在Firebug中看到它,但这不是很有用).
谢谢,祝大家周末愉快.
你可以这样做,虽然我会质疑为每个链接提出请求是多么明智....
$("a.overlay").each(function() { var $a = $(this); $.ajax({ type: 'GET', url: this.href, success: function() { // attach plugin here }, error: function() { // not good, log it } }); });
如果你不打算对页面的内容做任何事情,你可以用'HEAD'切换'GET',只获取所请求页面的标题,这样会更快,让你知道你想要什么.