【发布时间】:2011-08-12 10:09:35
【问题描述】:
我正在尝试为图像编写一个onerror 处理程序,用加载图像替换它们,然后定期尝试重新加载它们。我遇到的问题是,如果加载图像无法加载,它会进入无限循环的失败。我正在尝试通过检查 URL 是否是加载图像来处理这个问题:
if(photo.src != loadingImage) {
// Try to reload the image
}
很遗憾,loadingImage 可以是相对 URL (/images/loadingImage.jpg),但 photo.src 始终是完整 URL (http://example.com/images/loadingImage.jpg)。有没有办法在不向函数传递更多信息的情况下生成这个完整的 URL?显然我可以将主机名传递给它,或者需要完整的 URL,但我希望让这个函数的界面尽可能简单。
编辑:
基本上我想要保证如果我这样做photo.src = loadingImage,这将是真的:photo.src === loadingImage。限制是我对loadingImage 一无所知,除了它是一个有效的 URL(它可以是绝对的、相对于服务器或相对于当前页面)。 photo.src 可以是任何(绝对)URL,因此不一定与 loadingImage 在同一个域中。
【问题讨论】:
-
你是如何获得
loadingImage变量的? -
函数如下所示:
function retryImage(photo, loadingImage) { /* stuff */ }。所以loadingImage可以是任何东西。我希望它在loadingImage是有效 URL 时工作。 -
你说 loadingImage 和 photo.src 可能来自不同的域。如果
loadingImage是一个相对URL,并且不一定与photo.src同一个域名,你怎么知道它来自哪个域?是否有可以将其绑定回的源 URL?如果没有,我不知道您是否能够完成您在这里尝试做的事情。 -
@Joshua Carmody:我编辑了这个问题,希望能更清楚。如果
loadingImage是一个相对 URL,我希望它像任何其他 URL 一样被处理(所以如果它不包含方案,它是相对于当前页面或当前页面的服务器)。
标签: javascript