HTML中用原生JS判断是不是存在"/web/123.html"文件,如果存在则用iframe调用,iframe的高度为123.html的高

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTML中用原生JS判断是不是存在"/web/123.html"文件,如果存在则用iframe调用,iframe的高度为123.html的高相关的知识,希望对你有一定的参考价值。

html中用原生JS判断是否存在"/web/123.html"文件,如果存在则用iframe调用,iframe的高度为123.html的高;如果不存在,返回“无此网页”。大侠帮我写一段原生JS代码:↓↓↓ ps:网上的好多答案经测试都不太好使,请大侠手动帮帮我,感激。

<body>
<iframe src="/123.htm" name="myframe" id="myframe111" onload="jiazai()" width="100%" marginwidth="10px" frameborder="0" scrolling="no">如果无法显示,请更换浏览器后再尝试!</iframe>

<script>

帮我用原生JS补全代码。我将认真研究,在此感谢!

</script>

</body>

用图片的onerror触发是否存在文件,即使文件不是图像文件也可以的:

var a = document.createElement('img');
a.src = "/web/123.html";
document.body.appendChild(a);
a.onerror = function()
    //没有这个页面
    var b =document.getElementById('myframe111');
    document.body.removeChild(b);


//上面的方法可能会出错(因为文件格式问题)

$.ajax(
   url:'http://www.example.com/somefile.ext',
   type:'HEAD',
   error: function() 
       //file not exists
   ,
   success: function() 
       //file exists
   
);

//使用AJAX判断

追问

大哥,代码好像没写完吧。能完整一点吗?

请问哪句话是设置iframe高度的?

追答

没有设置高度的呀

因为123.html的高度会根据当前页面而变化,我们无从得知其真正高度,一般而言引用页面都是直接使用100%宽度而高度是按照引用内容的具体设置的

追问

如果我设置高度是1000,当页面缩放后,可能不能完全显示整个iframe页面了?有没有办法可以解决这个问题:让被iframe引用的界面,能够完全的 恰好的 表现在当前网页上。😇

追答

挺难的,直到你能做出AI让机器明白应该具体分辨多少吧,你把数据试一下,下面的每个宽度都试一下看看具体高度多少:400、768、1080、1200然后用if判断宽度输出高度~

追问

如何获取被调用的iframe的高度。哪怕是宽度是1000时候,原网页的高度。如何获取这个高度?辛苦了,解答后不再提问了,直接好评!

追答

一般而言测试稿在不同的时候高度不同的,而这个时候javascript并不能够明白,哪个高度是最好的,我们只能够通过CSS的设计稿,将不同宽度下不同高度进行匹配:

CSS用MEDIA进行匹配:

@media screen and (min-width: 768px)height:10px/* 大于768px的宽度*/
@media screen and (max-width: 767px)height:5p/* 小于767px的宽度*/

这个时候再使用Javascript才有用的,使用:

if(document.documentElement.clientWidth < 767)
    documnet.getElementById('myframe111').style.height = "5px";

else
    document.getElementById('myframe111').style.height = "10px";

还有疑惑嘛?可以继续问的~

追问

不好意思,我真的还想问一次。如何将iframe的高度设置为原文档的高度。问题的核心是如何获取常规状态下被调用的网页的高度。

比如被调用的网页常规状态下的高度是"1000",我如何能够获取这个"1000"?

追答

同上面的回答,常规的高度涉及到了AI方面的知识,我们可以设想一下,这次我们要100%的高度,下一次我们要他做到滚动条一般的,那他到底应该怎么识别呢?这里涉及到了人工智能的范畴,我们只能够把iFrame在不同宽度显示下的不同高度求出来(任何脚本都做不到的),然后用上面的JS判断宽度的方法添加高度。

例如代码:

window.PUIframe = ;
PUIframe.frameHeight = Array('','','','')//对应上面的:400,768,1080,1200写入宽度
PUIframe.tmpint = document.documentElement.clientWidth;
PUIframe.frameElement = document.getElementById('myframe111');
$.ajax(
   url:'http://www.example.com/web/123.html',
   type:'HEAD',
   error: function() 
        if(PUIframe.tmpint > 1200)
            b.style.height = PUIframe.frameHeight[3];
        
        else if(PUIframe.tmpint > 1080) 
            b.style.height = PUIframe.frameHeight[2];
        
        else if(PUIframe.tmpint > 768)
            b.style.height = PUIframe.frameHeight[1];
        
        else
            b.style.height = PUIframe.frameHeight[0];
        
   ,
   success: function() 
       alert('文件不存在');
       documnet.body.removeChild(PUIframe.frameElement);
   
);

一般而言我们的页面会是自适应的,就是通过CSS预先将其高度求出来,我们就可以从此得到这个页面的实际高度了(实在不行,使用开发者工具【Ctrl/Command + Shift + I】打开这个iFrame,那个开发者区域是可以拉动的,然后按照400,768,1080,1200四个主要的宽度查看分别对应的高度,再用Javascript写入,可能会有些困难,但是也只能够这样做:)

追问

辛苦了。可能是我基础太差,还需进一步学习。谢谢!

参考技术A 三楼。。。。。。追问

你这是什么?

如何判断js里的对象是不是存在

如何判断js里的对象是否存在,???

参考技术A 首先检查页面是否有错误,是否出现xxx未定义的情况
然后可以alert下,例如:
varstudent=newfunction()
this.id="01";
this.name="aa";

alert(student);
alert(student.id);
如果是[objectObject],说明存在
如果是undefined或null则说明不存在。
也可以使用js断点调试工具,跟踪调试,比如firebug

以上是关于HTML中用原生JS判断是不是存在"/web/123.html"文件,如果存在则用iframe调用,iframe的高度为123.html的高的主要内容,如果未能解决你的问题,请参考以下文章

jquery判断节点是不是存在

js 判断是不是存有事件 addeventlistener

在.NET中用JS如何判断上传图片是不是合格?

js判断元素是不是存在某个属性

js或者jQuery判断链接是不是存在

js 判断一个元素是不是存在