检测 iframe 加载错误

2024-06-23

我正在使用 src 属性将用户选择的页面加载到 iframe 中。如果加载失败,我想以对用户有意义的方式报告问题。 iframe 通常不支持 onerror 根据http://www.w3schools.com/jsref/dom_obj_frame.asp http://www.w3schools.com/jsref/dom_obj_frame.asp.

该页面可能来自用户的域,而不是我的域,因此我无法查看 iframe 的内容。

我可以设置超时并在加载成功时从 onload 处理程序中取消它,但这需要很长的超时以避免错误报告,同时我的 iPhone 上的 Safari 显示了一条可能会让用户感到困惑的警报。即使这对于 Kindle Fire 浏览器也不起作用 - 无论加载是否成功,它都会向我的处理程序传递一个加载事件。

我可以使用任何事件来检测故障吗?有什么办法可以抑制 Safari 的默认行为吗?有什么方法可以判断加载尝试是否失败? (如果我能做到这一点,我可以使用更短的超时并轮询,直到加载尝试得到解决)。

我可以要求使用最新的浏览器,但希望有一个可以在尽可能多的智能手机和平板电脑之间移植的解决方案。

我已经测试了 AJAX Get 想法,不幸的是它不起作用。跨域 AJAX Get 访问任意 URI 都会导致异常,无论目标是否存在并且是否可以加载到 iframe 中。


您可以将 iframe 和/或 ajax 请求设置为始终调用您控制的页面(即:loader.php),通过 get 向 loader.php 发送用户请求的页面。从 loader.php 中,使用curl 甚至只是file_get_contents 来获取外部页面。如果请求无法返回 loader.php,您可以检查那里的错误,并返回您希望 iframe 显示的任何内容。

虽然我的示例引用了 php 的使用,但多种脚本语言都支持curl。它可能比您可能拥有的其他解决方案更复杂,但也可以让您访问响应标头以及对页面加载失败的原因进行故障排除。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检测 iframe 加载错误 的相关文章

  • 如何替换 CSS 表达式

    我有一个用于时间表条目的旧 ASP Web 应用程序 其中充满了 CSS 表达式 它们出现在 CSS 文件中 ApptPage position relative height expression Math max document bo
  • 如何在 dash/plotly 中使用 iframe? (Python/HTML)

    我正在创建一个仪表板 我想使用这个交互式地图 网站链接 https www ons gov uk peoplepopulationandcommunity healthandsocialcare causesofdeath articles
  • Javascript CORS 图像/画布操作

    我正在尝试从另一个已配置为允许 CORS 的域检索图像 并操纵像素 然后我想显示结果并能够操纵结果 我可以在我请求的图像上使用 getImageData 和 toDataURL 所以我知道服务器部分可以工作 但是 当我尝试将图像的 src
  • PHP、MySQL 验证故障且搜索不起作用?

    我创建了一个小的注册粘性表格 一切工作正常 但如果我输入任何错误的值 例如姓名中的数字 年龄中的字母甚至错误的电子邮件格式 那么数据仍然保存在数据库中 我无法找出验证问题 另外一个是搜索选项 每当我在搜索框中输入任何名字或姓氏时 它都应该显
  • 在 Bootstrap 选择器上使用 jQuery 取消选择选项

    我对一些 UI 元素使用 Bootstrap SelectPicker 它允许用户选择多个选项并将其呈现在段落标签中的屏幕上 他们还应该能够删除选定的选项 这是我的代码 用于将选定的选项渲染到屏幕上 以便每个选项旁边都会显示一个 X 单击它
  • 脚本不会从nodejs应用程序中的ejs文件运行

    我正在尝试使用nodejs express mysql和ejs让网页显示图表 但我显然不明白ejs javascript等是如何工作的 我需要运行一个脚本来设置图表 来自 Chart js 模块 但它不会输出任何类型的图表 我尝试过的 将
  • 如何使用 GWT 创建可点击的链接?

    我想与 GWT 建立一些可点击的链接 我不确定这是否是最佳实践 基本上我想要类似这样的东西 如果我用 html 编写的话 a href index html alt Link a Use a 超级链接 http google web too
  • Bootstrap 面板主体,内有表格

    我有一个引导面板 单击图标即可折叠并自动关闭 该面板内部包含一个全宽的表格 但只有在没有任何内容时才看起来像这样panel body 例如 这张桌子横跨面板的整个宽度和高度 看起来不错 但如果我可以有一个围绕桌子的类 我会更喜欢 但是 如果
  • 单击即可切换背景颜色和过渡

    这看起来应该很容易 但我真的找不到办法做到这一点 动画 http doir ir css gif http doir ir css gif 当您单击这些相应的链接时 我需要更改和过渡页面的背景颜色 我见过的最接近触发这种类型转换的事情是 仅
  • 为什么变量 1 += 变量 2 比变量 1 = 变量 1 + 变量 2 快得多?

    我继承了一些 Python 代码 用于创建巨大的表 最多 19 列宽 5000 行 花了九秒用于在屏幕上绘制表格 我注意到每一行都是使用以下代码添加的 sTable sTable n GetRow where sTable是一个字符串 我将
  • 我可以跳过 HTML5 中“style”标签中的属性“type”吗? [复制]

    这个问题在这里已经有答案了 根据W3学校 http www w3schools com tags tag script asp 我可以跳过属性type对于标签script在 HTML5 中 Evidence HTML 4 01 和 HTML
  • HTML5 Canvas - 在画布上绘图、保存上下文并稍后恢复

    要求 现在 在画布上绘制 然后点击 保存 存储画布状态 离线绘制 但不作为图像 稍后 打开画布并显示之前保存的绘图 然后继续再次绘制 对于绘图 我们通常使用如下代码 canvas document getElementById can ct
  • iPhone Web 应用程序禁用缓存

    我使用 PHP 构建了一个 iPhone 网络应用程序 主 也是唯一 页面包括苹果移动网络应用程序支持 and 苹果触摸全屏元标记 以便在添加到主屏幕后可以全屏运行 然而 似乎每次我从主屏幕启动应用程序时 都会使用页面的缓存版本而不是刷新页
  • 不显示 ul 中的项目符号 [重复]

    这个问题在这里已经有答案了 我在 ul 中显示项目符号时遇到问题 有谁知道问题出在哪里 my site http www minikoblizky wz cz zamestnanci html它以 Co od v s o ek v me 开
  • 如何使用jQuery加载跨域html

    我有 2 个不同的 java web 项目在 2 个不同的 tomcat 服务器上运行 假设 projA 和 projB 在这里 我尝试从 projA 加载 projB 中可用的 html 我只是使用 jQuery load 来实现这一点
  • xsl 方法中的自关闭标签:xml

    我正在使用一个使用 xsl method xml 创建 html 模板的网站 但是 当 xsl 引擎呈现 html 页面时 我遇到了标签自动关闭的问题 div div 转换为 gt div div 该方法需要保留 xml 否则页面的其他组件
  • onclick链接/按钮获取数据属性值

    span class btn btn block btn inverse btn icon glyphicons home i i Daily span span class btn btn block btn inverse btn ic
  • 使用 c out 标签时不会出现新行

    我将 n 附加到字符串中 当使用 s 标签文本区域时 已附加换行符并且数据逐行显示 但是当我使用 c out 标签时 数据显示在一行中 如何使用 c out 标签逐行显示 StringBuffer sb new StringBuffer f
  • 带搜索框的 D3 图表

    我在 D3 中创建了一个图表 其中节点显示特定个人创建文档的时间 该图表还显示了一个搜索框 该搜索框根据搜索框输入是否与与该文档关联的单词匹配而将节点变成红色 这些单词列在数据集的第 5 列中 请参阅下面的数据集 我的问题 一旦将搜索输入到
  • 将画布下载为 PNG 图像[重复]

    这个问题在这里已经有答案了 当我尝试将画布下载为 PNG 图像时 浏览器会在新页面中打开该图像 但不下载它 我的下载代码 btnScaricaEtichetta click function console log Download loc

随机推荐

  • 更改文本字段中光标的大小 (Jetpack Compose)

    我想减少文本字段中光标的 高度 我怎么做 我的 TextField 具有默认光标高度 如下所示 我们可以通过自定义文本字段光标CoreTextField cursorBrush with Brush verticalGradient and
  • 如何告诉特定的 Delayed::Job 在控制台中运行?

    由于某种原因 Delayed Job 决定排队但不执行任何操作 即使我已经重新启动了它几次 甚至杀死 9 并重新启动它 它不会运行任何作业 我可以在 console 中指定一个特定的作业并让它工作吗 Ex Delayed Job find
  • 如何使用 python 进行网页抓取时解码 [email\xa0protected]

    当我尝试使用 python lxml html 从下面的标签中提取邮件 ID 时 它显示 email xa0protected 任何人都可以帮我解码这一点 a href cdn cgi l email protection class cf
  • 从Java中的字符串中删除字符

    我正在尝试删除 xml文件名的一部分 代码如下 String id fileR getName id replace xml idList add id 问题是它没有删除它 我不知道为什么它不会删除目标文本 EDIT java中的字符串是不
  • 在 Angular 2 中实现异步排序管道

    我正在尝试在 Angular 2 中创建一个自定义 Pipe 它将对对象数组进行排序 我得到了一些帮助这个帖子 https stackoverflow com questions 34363161 angular 2 displaying
  • 带有用 Typescript 编写的参数的 vuex getter

    我们可以创建一个 vuex store getter 它接受一个参数参数 如下所示 https vuex vuejs org en getters html https vuex vuejs org en getters html 我正在使
  • 在数据帧子集上插入变量

    我有一个大型数据框 其中包含多年来来自多个州的调查的观察结果 这是数据结构 state survey year time1 obs1 time2 obs2 CA 2000 1 23 1 2 43 CA 2001 2 43 1 4 52 CA
  • 需要用于 C#.Net 的 Google Talk API

    有人知道 C Net 的 Google Talk Api 吗 请帮忙 查看面向开发者的 Google Talk http code google com intl nl NL apis talk 它使用可扩展消息传递和状态协议 XMPP 最
  • 装修工合同

    合同 以函数作为参数并返回函数的函数 即传递函数的修改 或相同 版本 传递的函数 这里是 square 例如 floatify def square n return n n 装饰器是否应该只返回传递函数的装饰版本 而不返回其他内容 它应该
  • 如何在 Android 的 YouTube 播放器中隐藏 YouTube 徽标

    我不想在我的 Android 应用程序中分享 youtube 视频 但是当我单击 youtube playe 中的 youtube 徽标时 链接会转到 youtube 网站 那么 我如何在 youtube 播放器中隐藏 youtube 徽标
  • Android:我如何知道CSS注入是否完成?

    我仅在将 CSS 文件注入 HTML 后才尝试显示我的 webview 我尝试将其放在 onPageCommitVisible 函数上 但它仅适用于 23 个 api 及以上 有人知道如何仅在 CSS 加载完成后才显示 webview 吗
  • 使用 Akka 将文件从服务器流式传输到客户端

    基本上我想允许用户从服务器下载 csv 文件 假设服务器上已存在 CSV 文件 API 端点通过 GET export 公开 如何将文件从 Akka HTTP 服务器流式传输到客户端 这就是我到目前为止所拥有的 Service def ex
  • Java 确保库位于路径环境变量中

    我正在开发一个 Java 应用程序 它使用访问 Windows dll 的外部 jar 文件 如果我将 DLL 的路径放入 Windows 路径环境变量中 应用程序可以正常运行 但我真的不想在部署此应用程序的每台计算机上都设置此 Windo
  • 未找到 ffmpeg 命令,但 pip 列表显示 ffmpeg

    我一直在尝试使用命令安装 ffmpegpip install ffmpeg我正在没有 sudo 权限的服务器上执行此操作 在编写 ffmpeg 时 我得到 ffmpeg command not found 然后我检查了pip list它显示
  • 是否可以重新映射“wq”来保存并关闭当前缓冲区,而不是在 Vim 中保存并退出?

    Vim 新手 当我发出 wqEx 命令 我想让它只保存并关闭活动缓冲区 而不是保存它然后从 Vim 退出 同样 我想做 q命令与 bd在其效果中 对于如何实施这种行为有什么建议吗 Vim 允许用户在所有模式下为命令添加键映射 包括命令行模式
  • 使用 pytest 装置进行的测试可以交互运行吗?

    我有一些使用 pytest 和装置编写的测试 例如 class TestThing pytest fixture def temp dir self request my temp dir tempfile mkdtemp def fin
  • 转义片段中的 $ 字符

    我发现自己这些天做了很多 jQuery 所以我开始将一些常见的事情抽象成片段 我期待与社区分享这些内容 但我现在遇到了一个问题 代码片段中的文字是通过在文字名称周围添加美元符号 来定义的 以界定您想要提供的值的去向 这很困难 因为 jQue
  • 如何添加 UICollectionView 标题

    我希望以编程方式向我的 UICollectionView 添加标签 并使用 viewForSupplementaryElementOfKind 和 referenceSizeForHeaderInSection 来设置它 但是由于某种原因
  • 如何修复未捕获的 InvalidValueError: setPosition: not a LatLng or LatLngLiteral: in property lat: not a number?

    我正在尝试将我的 googlemaps v2 功能移植到 v3 但不知怎的 我陷入了一个奇怪的错误 我找不到我做错了什么 错误 未捕获 InvalidValueError setPosition 不是 LatLng 或 LatLngLite
  • 检测 iframe 加载错误

    我正在使用 src 属性将用户选择的页面加载到 iframe 中 如果加载失败 我想以对用户有意义的方式报告问题 iframe 通常不支持 onerror 根据http www w3schools com jsref dom obj fra