contentwindow

iframe父子兄弟之间调用传值(contentWindow && parent)

折月煮酒 提交于 2020-03-21 14:32:09
学习一个知识点最好的方法就是自己动手去的实现一些简单的helloworld,虽然可以在网上可以找到很多总结,但自己实现的过程才是自己的,期间遇到问题并解决问题的过程也会让自己记忆理解更加深刻。 更多信息,请参考: http://www.cxyeye.com/ iframe的调用包括以下几个方面:(调用包含html dom,js全局变量,js方法) 主页面调用iframe; iframe页面调用主页面; 主页面的包含的iframe之间相互调用; 主要知识点 1:document.getElementById("ii").contentWindow 得到iframe对象后,就可以通过 contentWindow得到iframe包含页面的window对象,然后就可以正常访问页面元素了; 2:$("#ii")[0].contentWindow 如果用jquery选择器获得iframe,需要加一个【0】; 3:$("#ii")[0].contentWindow.$("#dd").val() 可以在得到iframe的window对象后接着使用jquery选择器进行页面操作; 4:$("#ii")[0].contentWindow.hellobaby="dsafdsafsdafsdafsdafsdafsadfsadfsdafsadfdsaffdsaaaaaaaaaaaaa";

ajax加载数据到页面无法打印的解决办法

可紊 提交于 2020-03-02 08:46:11
今天,弄一个打印页面的功能大致的原理想法是,ajax加载页面到当前的一个隐藏iframe里面,然后打印iframe,为了兼容所有的浏览器,只好舍弃预览功能,使用print()方法打印。可是试了好几遍,每次打印都是空白啊。具体的代码如下 function XmlPostprint(){ var result=''; $.ajax({ url:"test222.html", success:function(data){ var doc=$("iframe#flyso")[0].contentWindow.document; doc.write(data); doc.close(); } }); } function prints() { XmlPostprint(); var ss=document.getElementById("flyso"); ss.contentWindow.close(); ss.contentWindow.focus(); ss.contentWindow.print(); } 之后无意中一次点击了两次打印按钮,突然发现竟然又可以打印了。才恍然大悟,jquery的ajax默认是异步加载的,也就是说prints()方法中的XmlPostprint()方法尚未完成,就直接执行下面的js语句了。解决方法就是jquery的ajax添加上async:false的属性

如何让ajaxfileupload.js支持IE9,IE10,并可以传递多个参数?

穿精又带淫゛_ 提交于 2020-03-01 02:47:08
exception : SCRIPT5022: DOM Exception: INVALID_CHARACTER_ERR (5) 思路分析: 第一步:兼容IE9,firefox,Opera,Safari等浏览器; var iframe = document.createElement("iframe"); iframe.setAttribute("id", "yui-history-iframe"); iframe.setAttribute("src", "../../images/defaults/transparent-pixel.gif"); iframe.setAttribute("style","position:absolute;top:0;left:0;width:1px;height:1px;visibility:hidden;") 第二步:兼容IE6-8:由于ie6-8 不能修改iframe的name属性 var oFrame = isIE ? document.createElement("<iframe name=/"" + this._FrameName + "/">") : document.createElement("iframe"); oFrame.name = "iframName"; 1、如何让ajaxfileupload.js支持IE9

IFrame与window对象(contentWindow)

馋奶兔 提交于 2020-01-26 11:58:48
var detialIframe=document.all("detialIframe"); 此处的IFrame是从document取得的,即作作为document的子对象出现,虽然是文档(document)对象,但由于它是独立的页面,因而拥有自己的事件,拥有自己的窗口对象(contentWindow); Window.detialIframe 或Window.frames(detialIframe)将直接取得IFrame的Window对象 IFRAME IFRAME 元素也就是文档中的文档 window 对象 浏览器会在其打开一个 HTML 文档时创建一个对应的 window 对象。但是,如果一个文档定义了一个或多个框架(即,包含一个或多个 frame 或 iframe 标签),浏览器就会为原始文档创建一个 window 对象,再为每个框架创建额外的 window 对象。这些额外的对象是原始窗口的 子窗口,可能被原始窗口中发生的事件所影响。例如,关闭原始窗口将导致关闭全部子窗口。如果想要创建新窗口(以及对应的 window 对象),可以使用像 open, showModalDialog 和 showModelessDialog 这样的方法。 contentWindow contentWindow属性是指指定的frame或者iframe所在的window对象

iframe.contentWindow 属性:关于contentWindow和contentDocument区分

此生再无相见时 提交于 2019-12-12 12:54:53
定义和用法     contentDocument 属性能够以 HTML 对象来返回 iframe 中的文档, 可以通过所有标准的 DOM 方法来处理被返回的对象 。   语法:frameObject.contentWindow,或者 iframeObject.contentWindow(不是jquery对象)   用iframe嵌套页面时,如果父页面要获取子页面里面的内容,可以使用contentWindow或者contentDocument,其区别如下:   1、contentWindow 这是个只读属性,返回指定的iframe的窗口对象。它虽然不是标准的一部分,但各个主流浏览器都支持。   2、contentDocument Firefox 支持,IE6,IE7都不支持,IE8开始支持,需要如此访问 document.frames['J_mainframe'].document。   兼容获取document对象: var getIFrameDoc = function(){ var iobj = document.createElement("iframe"); document.getElementsByTagName("body")[0].appendChild(iobj); return iobj.contentDocument || iobj

真正解决iframe高度自适应问题

孤者浪人 提交于 2019-12-05 17:36:38
1.前言 解决iframe高度自适应问题有两种方法 1. pym 2.手动设置iframe的高度 本文主要是总结第二种实现方式,因为第一种pym.js插件我没用懂 如果使用iframe时,遇到以下的需求: iframe的高度始终等于嵌入页面内容的高度,而不是屏幕的高度 右侧不允许出现两个滚动条 iframe的高度自适应不仅仅是指刚加载进来时,也有可能嵌入内容的高度会随点击变化(如:下拉菜单,左侧导航栏等) 页面可能同时嵌入多个iframe 2.contentWindow对象 *需要起个服务,不要直接在本地打开 这是个只读属性,返回指定的iframe的window对象 拿到这个对象,就可以根据正常网页的方法拿到嵌入(子)网页的文档高度,然后把值附给父页面的iframe的height。 function setIframeHeight(iframe) { if (iframe) { var iframeWin = iframe.contentWindow || iframe.contentDocument.parentWindow; if (iframeWin.document.body) { iframe.height = iframeWin.document.body.scrollHeight; } } }; 为了监测网页高度是否因为点击了某个下拉按钮高度变化

JavaScript的跨域访问问题

只愿长相守 提交于 2019-12-04 22:57:33
文章分享: 详解JS跨域问题 HTTP access control (CORS) html5 postMessage解决跨域、跨窗口消息传递 跨域与跨域访问 一、什么是跨域? 概念:只要 协议 、 域名 、 端口 有任何一个不同,都被当作是不同的域。 二、为什么浏览器要限制跨域访问呢? 原因就是安全问题:如果一个网页可以随意地访问另外一个网站的资源,那么就有可能在客户完全不知情的情况下出现安全问题。 三、跨域的常用方法 1. 跨域资源共享(CORS) 服务器端对于CORS的支持,主要就是通过设置 Access-Control-Allow-Origin 来进行的 2. JSONP 什么是jsonp?维基百科的定义是:JSONP(JSON with Padding) JSONP由两部分组成: 回调函数 和 数据 。回调函数是当响应到来时应该在页面中调用的函数,而数据就是传入回调函数中的JSON数据。 JSONP实现原理 :在js中,我们直接用XMLHttpRequest请求不同域上的数据时是不可以的。但是,在页面上引入不同域上的js脚本文件却是可以的,jsonp正是利用这个特性来实现的。 // jQuery < script type = "text/javascript" > $.getJSON( 'http://example.com/data.php?callback=?

getElementById.contentDocument error in IE

匿名 (未验证) 提交于 2019-12-03 02:12:02
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 由 翻译 强力驱动 问题: <html> <script type = "text/javascript" > function func () { alert ( document . getElementById ( 'iView' ). contentDocument ); } </script> <body> <iframe id = "iView" style = " width : 200px ; height : 200px ; " ></iframe> <a href = "#" onclick = " func (); " > click </a> </body> </html> After click, Firefox returns [object HTMLDocument]. Internet Explorer returns undefined. How can I select the iView element with Internet Explorer? Thanks. 回答1: From this page : Mozilla supports the W3C standard of accessing iframe's document

关于跨域的理解及方法

匿名 (未验证) 提交于 2019-12-02 23:40:02
作者:黄家兴 链接:https://www.zhihu.com/question/26376773/answer/244453931 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 比较经典的问题了。 看看我们之前的文章 大转转FE - 跨域的那些事儿 前言 最近做项目的时候遇到了一些跨域问题,虽然网上对于跨域的问题分享还挺多的。不过当我实际遇到的时候还是有点懵。趁项目刚上线完,写篇文章总结下。 造成跨域的两种策略 浏览器的同源策略会导致跨域,这里同源策略又分为以下两种 DOM同源策略:禁止对不同源页面DOM进行操作。这里主要场景是iframe跨域的情况,不同域名的iframe是限制互相访问的。 XmlHttpRequest同源策略:禁止使用XHR对象向不同源的服务器地址发起HTTP请求。 只要协议、域名、端口有任何一个不同,都被当作是不同的域,之间的请求就是跨域操作。 为什么要有跨域限制 了解完跨域之后,想必大家都会有这么一个思考,为什么要有跨域的限制,浏览器这么做是出于何种原因呢。其实仔细想一想就会明白,跨域限制主要是为了安全考虑。 AJAX同源策略主要用来防止CSRF攻击。如果没有AJAX同源策略,相当危险,我们发起的每一次HTTP请求都会带上请求地址对应的cookie,那么可以做如下攻击: 用户登录了自己的银行页面 http://