我的页面上有几个指向外部网站的 iframe。如果这些服务中断或更改,我想隐藏这些 iframe 而不是在我的页面上显示错误消息。 如果 iframe 已正确加载,有什么方法可以在 Javascript 中找到? 我添加了一个类来隐藏 iframe,然后在 iframe 准备就绪时使用 jQuery 将其删除,如下所示:
$('#widget').ready(function () {
$('#widget').removeClass('hidden');
});
当我在 iframe src 中放入无效 URL 时,它仍然会删除隐藏类,显示错误 iframe。 我的问题有两个:
- 如果 iframe 已正确加载,我如何才能使函数正常运行?
- 我不想使用 $('#widget').ready,而是想使用 $('iframe').ready 一次定位所有 iframe;如果我这样做,如何在函数内部引用加载的特定 iframe?
谢谢!
最佳答案
您的问题可以归结为:
how can I check if an URL exists and the website is alive from Javascript ?
答案分为:
对于内部 URL,使用 AJAX 并检查响应代码:如果它是
2xx
或3xx
(例如 200 或 302),没关系。如果是4xx
或5xx
(例如 404 或 500)这很糟糕。在 a similar answer 上阅读更多内容.对于外部 URL,由于称为 same-origin policy 的安全措施,您不能这样做.
由于您似乎指向外部 URL,因此这是我的建议:
创建一个服务器端组件(一个 Servlet、一个 RESTful WebService、一个 Struts2 操作等...根据您使用的服务器端技术,您喜欢什么)为您执行检查,并返回一个流式传输响应数据(如果有)和 HTTP 响应代码,您可以检查错误。然后从<iframe>
让我们调用您的组件 URL。
关于javascript - 如果未正确加载,则隐藏 iframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28589387/