我Knockout.js用来绑定iframe src标签(这可以根据用户进行配置).
现在,如果用户已配置http://www.google.com(我知道它不会在iframe中加载,这就是为什么我将其用于-ve场景)并且必须在IFrame中显示.但它会引发错误: -
拒绝在框架中显示" http://www.google.co.in/ ",因为它将"X-Frame-Options"设置为"SAMEORIGIN".
我为iframe提供了以下代码: -
<iframe class="iframe" id="iframe" data-bind="attr: {src: externalAppUrl, height: iframeheight}">
<p>Hi, This website does not supports IFrame</p>
</iframe>
Run Code Online (Sandbox Code Playgroud)
我想要的是,如果网址无法加载.我想显示自定义消息.
骗子在这里
现在,如果我使用onload和onerror作为: -
<iframe id="browse" style="width:100%;height:100%" onload="alert('Done')" onerror="alert('Failed')"></iframe>
Run Code Online (Sandbox Code Playgroud)
它可以正常加载w3schools.com,但不能与google.com.
其次: - 如果我把它作为一个功能,并尝试像我在我的小提琴,它不起作用.
<iframe id="browse" style="width:100%;height:100%" onload="load" onerror="error"></iframe>
Run Code Online (Sandbox Code Playgroud)
我不知道如何让它运行并捕获错误.
编辑: - 我已经看到如果iframe没有在stackoverflow中加载或加载问题,想要调用函数,但它显示可以在iframe中加载的网站的错误.
另外,我已经在加载事件上看了Stackoverflow iframe 谢谢!!
是否可以在JavaScript中仅使用XMLHTTPRequest来执行HTTP头请求?
我的动机是节省带宽.
如果没有,是否有可能伪造它?
我似乎在提出HEAD请求时遇到了一些问题,并保留了数组中数据的完整性.
鉴于此片段:
var imageTemp = Array();
$('*')
.each(function(index){
if($(this).css('background-image') != 'none'){
imageTemp.push($(this).css('background-image').slice(5, -2));
}
});
Run Code Online (Sandbox Code Playgroud)
我捕获给定页面上所有背景图像的URL.现在,尝试通过HEAD请求获取每个图像的大小Content-Length,我使用此片段:
var imageData = Array();
for(var i = 0; i < imageTemp.length; i++){
ajaxSizeRequest = $.ajax({
type: "HEAD",
async: true,
url: imageTemp[i],
success: function(message){
imageData.push([imageTemp[i], ajaxSizeRequest.getResponseHeader('Content-Length')]);
}
});
}
Run Code Online (Sandbox Code Playgroud)
然而,当我倾倒imageData通过console.log,我的每个元素(这应该是包含URL和内容长度的数组)最终成为[undefined, XXXX]其中XXXX总是最后的请求的大小Content-Length
我很难过,虽然这似乎是一个时间/范围问题.我在这里遇到过某种竞争条件吗?
我使用'google viewer'查看一些文档.唯一的问题是,如果浏览器有一个处于"不明朗"的谷歌登录,它什么也没有显示,"拒绝显示文件,因为X-Frame-Options禁止显示".发生错误并显示在控制台中.
我所说的"limbo"是指登录已知,但用户必须重新输入密码才能重新验证.
有没有一种方法来检测何时发生此错误,以便显示弹出错误以通知用户?
提前致谢.