如何检测浏览器何时阻止iFrame

时间:2019-12-14 15:38:38

标签: javascript html security iframe ecmascript-next

在https网站上,我试图将随机提交的URL加载到iframe中,以使用户能够看到该网站嵌入在我自己的用户界面中。

只要远程URL是https(例如我自己的网站),并且远程服务器没有明确阻止自己嵌入到iframe中,则该网站在iframe中的显示效果就很好。我知道如何创建一个服务器端脚本,该脚本可以预先检测是否由于第三方的故意iframe阻止而阻止了iframe。

但是,有很多原因会导致iframe被浏览器(不是第三方服务器)阻止:

  1. 如果远程网址不是https,或转发到非https网址, 它会(被浏览器)阻止在iframe中显示。
  2. 如果远程站点确实是https,但包含至少一个 由http提供的资源(而不是https),浏览器将阻止 mixed content造成的iframe。

我的问题专门是这样的:浏览器阻止了iframe时,如何使用客户端JavaScript进行检测。我希望我的客户端javascript能检测到该块以及该块的原因(如果可以检测到的话,我知道如何记录)。

总而言之,我已经知道如何检测第三方何时阻止iframe(使用服务器端脚本),我只对显示如何检测网络浏览器的答案感兴趣。正在进行屏蔽,以及如何使用客户端javascript进行检测。

我可以在控制台(shift-ctrl-i)中看到这些非致命的块,但是我不知道如何在运行时以编程方式检测到它们,然后通过提供信息说明为什么会优雅地处理这些块块和链接,以便用户可以在新选项卡中打开资源。例如,通常我使用try / catch语句捕获错误,但是我不知道如何捕获由于iframe src位置而出现的浏览器级错误,这些错误似乎只出现在控制台中。

我的首要任务是,在未阻止页面时在iframe中显示该页面,并在每次阻止时以编程方式执行其他操作。

这不起作用,但这是我尝试过的一个示例:

window.addEventListener('error', function(event)
{
    console.log(`Caught Using Javascript`, event);
});

该错误显示在控制台中,但“使用Java捕获”却没有: enter image description here

0 个答案:

没有答案