判断iframe是否加载完成 iframe方法
jsp中iframe 如何加载数据?
iframe采用的是异步加载数据,你可以将a页面的iframe换成
判断iframe是否加载完成 iframe方法
判断iframe是否加载完成 iframe方法
判断iframe是否加载完成 iframe方法
我想在页面签到一个iframe 但是iframe子窗口的链接地址页面我不能保证随时都是正常的,有时候打不开就出现白色了与网页整体不搭配。我想做一个功能在加载iframe之前先判断这个src请求的地址是否正常。求教应该如何做。JS能做么,还是需要代码来写
我这个是将查出的数据库内容放在session下面的list中,然后再在jsp页面循环读出到table中去,你看行不行。
<%
ja.util.List
for(Student s:bslist){
%>
<%} %>
你这样做的目的是为了局部刷新吧.如果点分类,只刷新物品列表那一块.
这样没有什么特别好的办法,来解决.
页面交互的时间,完全是由你的请球响应时间决定的.不是你想快就能快的,
一般的办法是弄个进度条一类的东西,在那表示一下.掩人耳目.
如果你都话到一个面里,那就有可能是整个画面的刷新慢.
iframe有个src属性,可以指向其他页面
不用等待onload完成再请求
问题是不是想的太复杂了,用iframe解决大数据量加载的方案很多,异步加载没有什么不好的,你需要做的就是在数据出来之前在iframe处加一个让用户等待的状态条,让用户知道这是在加载数据,有很多状态条的js,随便找一个就行了,ajax也会有延迟的。
iframe的使用方法:
在src中写入你要嵌套的页面,设置好宽度、高度等属性。
根据你的问题就使用ajax查询吧!把查询到的结果写到b.jsp上就行了。
只IE支持
关于iframe的一些知识
1、iframe的创建比一般的DOM元素慢了1-2个数量级
iframe的创建比其他包括scripts和css的DOM元素的创建慢了1-2个数量级。当然页面一般不会包含太多的iframe,所以创建DOM花费的时间还不会占很重。
2、阻塞页面加载
及时触发window的onload是非常重要的。onload触发使浏览器的“忙”指示器停止,告诉用户当前网页已经加载完毕。当onload加载延迟后,它给用户的感觉是这个网页非常慢。
3、P了..加的是if条件.你循环顶什么用.照你这么循环.只要个frame加载完就直接执行了.哪儿还能循环到下一个frame.的连接池
浏览器只能开少量的连接到web。绝大部分浏览器,主页面和其中的iframe是共享这些连接的。这意味着iframe在加载资源时可能用光了所有的可用连接,从而阻塞了主页面资源的加载。如果iframe中的内容比主页面的内容更重要,这当然是好的。但通常情况下,iframe里的内这样会有一个问题,重新获取到内容的iframe,它自己需要重新加载css跟img,有时候会出现需要打印的组件样式不对或者不显示的问题。所以在打印之前还需要下iframe加载的跟样式是否加载完成.容是没有主页面重要的。这时iframe用光可用连接就不值得了。
4、不利于SEO
综上,iframe应谨慎使用。
详解iframe跨域的几种常用方法(小结)
var zdoc = document.frames[id].document;背景 随着业务的发展,自然地会有一些公共的业务被抽离成为公共组件共各个项目使用。但是由于各个项目用到的技术栈都有所不同,所以这个公共组件就不能方便地被引用了。为解决这个问题,我们把这个组件写成了单独的页面挂到一个域名下,其他项目采用iframe或者webview的方式去加载这个页面,从而实现功能的简单复用。
没有实际的解决办法,你用ajax应该也是一样的.不过这过程中也产生了很多问题,单是跨域就会出现好几次了。以下我将会介绍我遇到的跨域问题以及一些解决方法。 为什么会跨域
为了保证用户信息的安全,95年的时候Netscape公司引进了同源策略,里面的同源指的是三个相同:协议、域名、端口。
违反了同源策略就会出现跨域问题,主要表现为以下三方面:
无法读取cookie、localStorage、indexDB
DOM无法获得
场景 最近在做一个需求,需要用iframe引入一个别人封装好的类似视频播放器的东西。iframe里面有一个全屏的按钮,点击后需要页面让iframe全屏,由于受到同源策略的限制,iframe无法告诉页面全屏。
解决办法 设置domain
document.domain作用是获取/设置当前文档的原始域部分,同源策略会判断两个文档的原始域是否相同来判断是否跨域。这意味着只要把这个值设置成一样就可以解决跨域问题了。 在此我将domain设置为一级域名的值,a页面为a.demo,a页面中iframe引用的b页面为b.demo,具体设置为
document.domain = 'demo'
设置完之后,在a页面的window上挂载使iframe全屏的方法 // a页面
window.toggleFullScreen = () => {
// do soming
}在b页面上可以直接获取到a页面的window对象并直接调用 // b页面
window.parent.toggleFullScreen()
但是这个值的设置也有一定限制,只能设置为当前文档的上一级域或者是跟该文档的URL的domain一致的值。如为a.demo,那domain就只能设置为demo或者a.demo。因此,设置domain的方法只能用于解决主域相同而子域不同的情况。 使用中间页面
我们还可以使用一个与a页面同域名但不同路由的c页面作为中间页面,b页面加载c页面,c页面调用a页面的方法,从而实现b页面调用a页面的方法。具体作如下: 在a页面的node层新开一个路由,此路由加载一个c页面作为中间页面,c页面的为a
window.onload = function () {
parent.parent.toggleFullScreen();
}
由于c页面和a页面是符合同源策略的,所以可以避开跨域问题,执行全屏的方法。
tmessage window.tMessage方法可以安全地实现跨源通信,写明目标窗口的协议、主机地址或端口就可以发信息给它。
// b页面
parent.tMessage(
value,
""
);
// a页面
window.addEventListener("message", function( nt ) {
if (nt.origin !== '') return;
});
为了安全,收到信息后要检测下nt.origin判断是否要收信息的窗口发过来的。 总结
通过以上的方法,我们就可以和iframe自由通信啦。
如何判断一个IFRAME的SRC地址是否能响应
您的回答被采纳后将获得系统奖励框架代码怎么会写到body里头去了,应该放到body外面,将body标签放到noframes标签里面,然后写上 $(window.frames['header'].document.body).html()20(
如何用js判断页面加载完成包括不要用onload
toggleFullScreen()document.onreadystatechange = stateChange;
function stateChange() {
if(document.readyState == 'complete') {
for(i=0; i window.frames[i].document.onreadystatechange = stateChange; if(window.frames[i].document.readyState != 'complete') { stateChange(); return; }} }alert('compley complete'); }//递归解决所有内嵌frame document.onreadystatechange =subSoming;//当页面加载状态改变的时候执行这个方法. function subSoming() -------------- 那就再加个IF条件呗: "complete" 上面代码已修改. -------------- 没有name就加个name呗.而且就算没有name也照样可以那么写啊.没有影响的. 或者你也可以这么写: window.parent.frames.框架名.document..... -------------- 老老实实把想判断的frame加到if里吧. 你是在哪个位置获取iframe中内容的高度的呢?如果是在父页面的话你的语句没有问题,但必须要在iframe中内容加载完成后再获取| 分类:Html/Css | 浏览2次,你可以用一个按钮来ALERT一下,或者在onload里ALERT一下来显示看看获取有没有问题 在想打印一个web页面的时候,会用到window.print()。默认会打印当前document内容,样式/还有js 判断是不是在iframe里
分享到:------解决方案--------------------------------------------------------给iframe一个id吧,可以使用父页面的document对象获取到iframe的document对象使用window.print()打印指定的一个vue 组件
你可以在页面加载的时候同时加载另一个页面,然后iframe指向这个页面
思路是这样的,通过一个iframe 把当前需要打印的组件内容给到iframe的body,样式呢,我们就拿当前document里面的样式。因为vue组件用的也是当前页面的样式,当运行 npm run dev(npm run serve) 的时候, css-loader /style-loader 会把组件的样式打包到document的head标签下页面。
所以就可以这样写 PrintView.vue
组件中的iframe默认不显示的,因为不需要看到它,打印预览有电脑的打印预览.
然后通过props下的html这个属性接收需要打印的组件的html.通过watchhtml的变化,当有变化我们就调用自定义的
setBodyHtml 方法打印,这个方法也很简单,把当前页面的头部样式给到当前组件的iframe,把需要打印的html给
到当前组件的 iframe
通过调用 iframe.window.print(); 打印当前组件。所以组件完整的写法是这样
通过loadStyle与loadImage这两个方法,别找到iframe中的样式和. 样式会有两种,一种是head的