在iframe里刷新父窗口的JS语句
- 格式:docx
- 大小:15.48 KB
- 文档页数:8
js控制iframe的刷新(页⾯局部刷新)今天遇到个问题,后台会员审核之后,页⾯内的会员审核状态要及时改变,但⼜不能指望⽤户⼿动刷新(⽤户体验很不好)如果审核页⾯和显⽰审核状态时同在⼀个html页⾯的话,那么直接⽤js改变div内部的⽂本就可以了,像下⾯这样:$("#btn1").click(function(){$("#test1").text("Hello world!");});$("#btn2").click(function(){$("#test2").html("<b>Hello world!</b>");});$("#btn3").click(function(){$("#test3").val("Dolly Duck");});但是,后台页⾯的布局是这样的:这画的应该不难看出来吧,不过我还是要说明⼀下;⼀个html中包含⼀个iframe1,点击这个iframe1中的某个字段,会跳出⼀个模态框(⽤于审核的div2),审核结束后提交信息,点击button ok,此时数据提交到接⼝并进⾏了⼀系列操作(此处省略具体操作),然后div2窗⼝关闭,这个时候iframe1中的某些字段应该做出改变,⽐如,之前审核状态是“未审核”,在div2审核操作了之后,此时的状态应该变为“已审核”,⽤户希望的是,在点击了button按钮之后,状态⽴即刷新,那么我们应该在提交数据到接⼝,成功之后做出点什么来改变这个状态,但是上⾯说了,直接⽤js获取iframe1中的标签改变其值是⾏不通的,所以我们可以这么做:function check_pass(uid) {$.ajax({type: "GET",url: siteurl,dataType: "json",data:{"c":"api","m":"checkpass","uid":uid},success: function(text) {var _body = window.parent;var _iframe1=_body.document.getElementById('rightMain');_iframe1.contentWindow.location.reload(true);}});}这个函数是在button点击的时候执⾏的,button是存在于div2中的,发起ajax请求向接⼝提交数据之后,我们来看请求成功之后的代码:var _body = window.parent;--------------------获取这个div2的⽗级窗⼝,那么⾃然是这个body了;var _iframe1 = _body.document,getElementById('rightMain');-------------------根据id获取iframe1这个对象;_iframe1.contentWindow.location.reload(true);-----------------------看到reload就该知道是刷新了这个iframe1了。
js 使用iframe 方法如何使用JavaScript 中的iframe 方法一、什么是iframe 方法iFrame 是HTML 中的一个标签,可以用来在当前页面嵌入另一个页面。
类似于在一个页面中嵌套了另一个完整的页面,并且可以对嵌套的页面进行操作。
在JavaScript 中,我们可以使用iframe 方法来对iFrame 进行控制和操作。
二、如何在HTML 中添加iFrame在HTML 中添加iFrame 非常简单,只需要使用`<iframe>` 标签,并设置src 属性为要嵌入的页面的URL。
例如:html<iframe src="这样,就在当前页面中创建了一个iFrame,并将页面嵌入其中。
三、使用JavaScript 操控iFrame1. 获取iFrame 引用要在JavaScript 中操作一个iFrame,首先需要获取该iFrame 的引用。
我们使用`contentWindow` 属性来获取iFrame 文档对象的引用。
例如:javascriptvar iframe = document.getElementsByTagName('iframe')[0];var iframeContentWindow = iframe.contentWindow;上述代码中,我们首先获取了第一个iframe 元素,然后使用`contentWindow` 属性获取了iFrame 内的文档对象。
2. 在iFrame 中执行JavaScript获取了iFrame 的引用后,我们可以在其中执行JavaScript 代码。
使用`contentWindow` 的`eval` 方法来执行JavaScript 代码。
例如:javascriptvar iframe = document.getElementsByTagName('iframe')[0];var iframeContentWindow = iframe.contentWindow;在iFrame 中执行JavaScript 代码iframeContentWindow.eval('alert("Hello, iFrame!");');上面的代码将在iFrame 中执行JavaScript 代码,并弹出一个包含"Hello, iFrame!" 的弹窗。
js中iframe调用父页面的方法JS中iframe调用父页面的方法在Web开发中,我们可能会使用iframe标签来嵌入其他页面或者应用,因为iframe允许我们将外部内容嵌入到当前页面中。
然而,如果我们需要在嵌入的iframe中调用父页面的方法,这可能会是一个非常棘手的问题。
在本文中,我们将介绍如何在JS中iframe调用父页面的方法。
一、子页面调用父页面的方法通常情况下,我们可以使用window.parent对象来访问父窗口的JavaScript对象和方法。
这可以通过以下代码来实现:```window.parent.parentMethod();```其中,parentMethod()是父页面中的方法。
除了使用window.parent来访问父页面之外,我们还可以在子页面中使用top对象来访问最顶层的窗口,这可以通过以下代码来实现:```top.parentMethod();```其中,parentMethod()是父页面中的方法。
二、父页面调用子页面的方法如果我们需要在父页面中调用子页面中的方法,也可以通过window 对象来实现。
首先,我们需要获取到子页面的引用,这可以通过以下代码来实现:```var iframe = document.getElementById('myiframe');var innerDoc = iframe.contentDocument ||iframe.contentWindow.document;var innerWindow = iframe.contentWindow;```其中,myiframe是iframe标签的ID属性值,innerDoc是子页面的document对象,innerWindow是子页面的window对象。
在获取到内嵌子页面的引用之后,我们可以调用该页面中的JavaScript方法。
以下是一个示例代码:```innerWindow.childMethod();```其中,childMethod()是子页面中的方法。
父页面调用iframe的方法父页面可以通过以下几种方法调用iframe中的方法:1. 通过iframe元素的contentWindow属性获取iframe窗口对象,然后可以直接调用该窗口对象的方法。
示例代码如下:javascriptlet iframe = document.getElementById('myiframe');iframe.contentWindow.postMessage('message', '*');2. 通过iframe元素的contentDocument属性获取iframe文档对象,然后可以通过该文档对象的getElementById、querySelector等方法获取到iframe 中的元素,进而调用其方法。
示例代码如下:javascriptlet iframe = document.getElementById('myiframe');let iframeDoc = iframe.contentDocumentiframe.contentWindow.document;let iframeElement = iframeDoc.getElementById('myelement'); iframeElement.myMethod();3. 如果iframe中的方法被设置为全局函数,可以直接通过window对象调用。
示例代码如下:javascriptlet iframe = document.getElementById('myiframe');iframe.contentWindow.myMethod();需要注意的是,以上方法在父页面和iframe页面的域名需相同,否则出于安全考虑,会受到同源策略的限制。
如果父页面与iframe页面的域名不同,可以通过postMessage方法实现跨域通信。
javascript中的iframe基本用法iframe是HTML中的一种元素,它可以嵌入其他网页内容到一个网页中,提供了一种简单的方式来展示其他网页的内容。
在JavaScript中,我们可以使用iframe来加载和操作iframe中的内容,从而实现一些特殊的功能和效果。
一、基本用法1.创建iframe元素:在HTML代码中,可以使用<iframe>标签来创建一个iframe元素。
例如:```html<iframesrc="other_page.html"width="500"height="300"></ifr ame>```上面的代码创建了一个宽为500像素、高为300像素的iframe元素,并指定了其内容为“other_page.html”。
2.获取iframe元素:在JavaScript中,可以使用document对象的getElementById()方法或getElementsByTagName()方法来获取iframe元素。
例如:```javascriptvariframe=document.getElementById("myIframe");```上面的代码获取了一个id为“myIframe”的iframe元素。
3.操作iframe内容:可以通过改变iframe元素的src属性来加载不同的页面,也可以通过读取iframe元素的内容来获取iframe中的数据。
例如:```javascript//加载其他页面iframe.src="other_page.html";//读取iframe中的数据variframeContent=iframe.contentWindow.document.body.inner HTML;```上面的代码分别加载了其他页面并读取了iframe中的HTML内容。
在 JavaScript 中使用 iframe 调用父页面的方法在前端开发中,经常会遇到需要在 iframe 中调用父页面的方法的情况。
iframe 是一种嵌入式窗体,可以将其他网页嵌入到当前页面中。
在某些场景下,我们需要在 iframe 中调用父页面的方法,实现双向通信和交互效果。
本文将介绍如何在JavaScript 中使用 iframe 调用父页面的方法,并提供一些常见的应用场景和示例代码。
1. 如何获取父页面的方法要调用父页面的方法,首先需要获取到父页面的 window 对象。
window 对象代表一个浏览器窗口或一个 iframe,通过它可以访问和操作当前页面的各种属性和方法。
在 iframe 中,可以通过 window.parent 来获取父页面的 window 对象。
下面是一个简单的示例,展示了如何获取父页面的方法:// 在 iframe 当中var parentWindow = window.parent;在上述代码中,使用 window.parent 将父窗口的 window 对象赋值给parentWindow 变量。
之后可以使用 parentWindow 来调用父页面的方法。
2. 调用父页面的方法获取到父页面的 window 对象之后,就可以使用它来调用父页面的方法了。
调用父页面的方法与调用当前页面的方法类似,只需要使用父页面的 window 对象作为调用者即可。
下面是一个简单的示例,展示了如何在 iframe 中调用父页面的方法:// 在 iframe 当中var parentWindow = window.parent;parentWindow.myFunction(); // 调用父页面的 myFunction 方法在上述代码中,通过 parentWindow 调用了父页面的 myFunction 方法。
3. 示例应用场景3.1 数据传递和通信一个常见的应用场景是在 iframe 中进行数据传递和通信。
iframe 跨域调用js 方法摘要:1.IFrame 跨域原理简介2.调用JavaScript 方法的方式3.跨域策略解决方案4.示例代码及解析正文:在前端开发中,IFrame 跨域调用JavaScript 方法是一个常见的问题。
本文将详细介绍IFrame 跨域原理、调用JavaScript 方法的方式,以及解决跨域问题的策略。
最后通过示例代码进行解析,帮助大家更好地理解和应用。
一、IFrame 跨域原理简介IFrame 跨域实际上是基于同源策略(Same-Origin Policy)的。
同源策略是浏览器为了保护用户信息安全而设立的一种机制,它限制了来自不同源的资源相互交互。
这里的“源”指的是协议、域名和端口号。
当请求的源与响应的源不同时,浏览器就会返回一个跨域错误。
二、调用JavaScript 方法的方式在IFrame 中调用JavaScript 方法,主要有以下两种方式:1.父窗口主动调用子窗口的JavaScript 方法:```javascript// 父窗口window.addEventListener("load", function() {var iframe = document.getElementById("myIframe");iframe.contentWindow.myFunction();});```2.子窗口主动调用父窗口的JavaScript 方法:```javascript// 子窗口window.addEventListener("load", function() {var iframe = document.getElementById("myIframe");iframe.contentWindow.postMessage({msg: "Hello from iframe!"}, "*");});// 父窗口window.addEventListener("message", function(e) {console.log(e.data);});```三、跨域策略解决方案1.服务端配置CORS(跨域资源共享):浏览器允许跨域请求的前提是服务器需要支持CORS 机制。
js实现刷新iframe的⽅法汇总javascript实现刷新iframe的⽅法的总结,现在假设存在下⾯这样⼀个iframe,则刷新该iframe的N种⽅法有:复制代码代码如下:<iframe src="1.htm" name="ifrmname" id="ifrmid"></iframe>第⼀种⽅法:⽤iframe的name属性定位复制代码代码如下:<input type="button" name="Button" value="Button" onclick="document.frames('ifrmname').location.reload()">或者复制代码代码如下:<input type="button" name="Button" value="Button" onclick="document.all.ifrmname.document.location.reload()">第⼆种⽅法:⽤iframe的id属性定位复制代码代码如下:<input type="button" name="Button" value="Button" onclick="ifrmid.window.location.reload()">第三种⽅法:当iframe的src为其它⽹站地址(即跨域操作时)复制代码代码如下:<input type="button" name="Button" value="Button" onclick="window.open(document.all.ifrmname.src,'ifrmname','')">⽗页⾯中存在两个iframe,⼀个iframe中是⼀个链接列表,其中的链接指向另⼀个iframe,⽤于显⽰内容。
跨域调用iframe中的js方法-概述说明以及解释1.引言1.1 概述概述在Web开发中,经常会遇到需要在不同域下的页面进行通信的情况。
而其中一个常见的场景就是在一个页面中嵌套了另一个域下的iframe,并且需要在父页面和子页面之间进行js方法的调用。
这就涉及到了跨域调用iframe中的js方法的问题。
本文将针对这一问题进行探讨,介绍如何实现跨域调用iframe中的js 方法以及需要考虑的安全性问题。
通过深入的研究和分析,希望能够为开发者提供解决跨域通信问题的有效方法,并进一步探索其在实际应用中的潜力和前景。
1.2文章结构文章结构包括引言、正文和结论三个部分。
引言部分会介绍文章的主题,为读者提供一个概览,让他们了解文章的重点和目的。
正文部分会深入探讨跨域调用iframe中的js方法的相关知识,包括什么是跨域调用iframe中的js方法、实现跨域调用的方法和安全性考虑。
结论部分会总结全文的内容,强调重点,指出文章的价值和意义,并展望未来可能的发展和应用场景。
1.3 目的跨域调用iframe中的js方法是在前端开发中常见的需求,特别是在跨域页面之间需要进行数据交互或者功能调用的情况下。
通过实现跨域调用,我们可以实现不同域下页面之间的数据传递和相互调用,提高页面的交互性和功能性。
本文的目的就是通过介绍跨域调用iframe中的js方法的实现方法,让读者了解如何在不同域之间进行js方法的调用,从而更好地实现页面间的数据交互和功能调用。
同时,我们也会讨论如何在跨域调用中考虑安全性问题,确保数据的安全性和可靠性。
通过本文的学习,读者将能够更好地处理跨域调用iframe中的js方法的场景,提高前端开发的技术水平和应用能力。
2.正文2.1 什么是跨域调用iframe中的js方法1.1 什么是跨域调用iframe中的js方法在Web开发中,跨域指的是在一个域下的页面试图去请求另一个域下的资源。
在网页中,一个常见的跨域场景就是使用iframe标签嵌套不同域下的页面。
vue js中iframe调用父页面的方法Vue.js 中的 iframe 调用父页面的方法在 Vue.js 应用中,如果需要在 iframe 中调用父页面的方法,可以通过`window.parent` 对象来实现。
下面我将详细介绍如何在 Vue.js 中使用 iframe 调用父页面的方法。
首先,在 Vue.js 组件中,我们可以使用 `mounted` 钩子函数来监听页面加载完成事件。
在该钩子函数中,我们可以通过`window.parent` 来获取父页面的上下文。
```javascriptmounted() {// 获取父页面的上下文const parentWindow = window.parent;}```接下来,我们可以在 `mounted` 钩子函数中,通过 `postMessage` 方法将消息发送给父页面。
父页面可以通过监听 `message` 事件来接收这些消息。
```javascriptmounted() {const parentWindow = window.parent;// 发送消息给父页面parentWindow.postMessage('Hello from iframe!', '*');}```在父页面的代码中,我们可以通过监听 `message` 事件来接收来自 iframe 的消息。
```javascriptwindow.addEventListener('message', event => {// 通过 `event.source` 来判断消息发送者是不是 iframeif (event.source === iframe.contentWindow) {// 获取消息内容const message = event.data;// 调用父页面中的方法console.log(message); // 输出:Hello from iframe!}});```使用 `postMessage` 方法发送消息时,第一个参数是要发送的消息内容,第二个参数是消息接收者的源信息。
在iframe里刷新父窗口的JS语句找了很久才找到!在iframe里刷新父窗口的JS语句,如何在子窗口中刷新父窗口,js刷新父窗口,iframe子窗口刷新父窗口,Javascript语句:只需在iframe的子窗口里加入--><script language="javascript">parent.location.replace(parent.location.href);</script>parent.location.reload();而window.opner.location.reload() 是指打开新窗口操作利用iframe实现无刷新上传图片()main.aspx<%@ Page Language="C#" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server"></script><html xmlns="/1999/xhtml" ><head runat="server"><title>Photo Upload Demo</title><style type="text/css">input,form,span,div{font-family:Tahoma;font-size:12px;}</style><script type="text/javascript">/* <![CDATA[ */var PROGRESS_INTERVAL = 500;var PROGRESS_COLOR = '#000080';var _divFrame;var _divUploadMessage;var _divUploadProgress;var _ifrPhoto;var _loopCounter = 1;var _maxLoop = 10;var _photoUploadProgressTimer;function initPhotoUpload(){_divFrame = document.getElementById('divFrame');_divUploadMessage =document.getElementById('divUploadMessage');_divUploadProgress =document.getElementById('divUploadProgress');_ifrPhoto = document.getElementById('ifrPhoto');var btnUpload =_ifrPhoto.contentWindow.document.getElementById('btnUpload');btnUpload.onclick = function(event){var filPhoto =_ifrPhoto.contentWindow.document.getElementById('filPhoto');//Baisic validation for Photo_divUploadMessage.style.display = 'none';if (filPhoto.value.length == 0){_divUploadMessage.innerHTML = '<spanstyle=\"color:#ff0000\">请选择文件.</span>';_divUploadMessage.style.display = '';filPhoto.focus();return;}var regExp =/^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w].*))(.jpg|.JPG|.gif|.GIF|.png| .PNG|.bmp|.BMP)$/;if (!regExp.test(filPhoto.value)) //Somehow the expression does not work in Opera{_divUploadMessage.innerHTML = '<spanstyle=\"color:#ff0000\">文件类型错误. 仅支持 jpg, gif, png 和bmp.</span>';_divUploadMessage.style.display = '';filPhoto.focus();return;}beginPhotoUploadProgress();_ifrPhoto.contentWindow.document.getElementById('phot oUpload').submit();_divFrame.style.display = 'none';}}function beginPhotoUploadProgress(){_divUploadProgress.style.display = '';clearPhotoUploadProgress();_photoUploadProgressTimer =setTimeout(updatePhotoUploadProgress, PROGRESS_INTERVAL);}function clearPhotoUploadProgress(){for (var i = 1; i <= _maxLoop; i++){document.getElementById('tdProgress' +i).style.backgroundColor = 'transparent';}document.getElementById('tdProgress1').style.backgroundCo lor = PROGRESS_COLOR;_loopCounter = 1;}function updatePhotoUploadProgress(){_loopCounter += 1;if (_loopCounter <= _maxLoop){document.getElementById('tdProgress' +_loopCounter).style.backgroundColor = PROGRESS_COLOR;}else{clearPhotoUploadProgress();}if (_photoUploadProgressTimer){clearTimeout(_photoUploadProgressTimer);}_photoUploadProgressTimer =setTimeout(updatePhotoUploadProgress, PROGRESS_INTERVAL);}function photoUploadComplete(message, isError){clearPhotoUploadProgress();if (_photoUploadProgressTimer){clearTimeout(_photoUploadProgressTimer);}_divUploadProgress.style.display = 'none';_divUploadMessage.style.display = 'none';_divFrame.style.display = '';if (message.length){var color = (isError) ? '#ff0000' : '#008000';_divUploadMessage.innerHTML = '<span style=\"color:' + color + '\;font-weight:bold">' + message + '</span>';_divUploadMessage.style.display = '';if (isError){_ifrPhoto.contentWindow.document.getElementById(' filPhoto').focus();}}}/* ]]> */</script></head><body><form id="form1" runat="server"><div style="width:400px"><fieldset><legend>上传图片</legend><div id="divFrame"><iframe id="ifrPhoto" onload="initPhotoUpload()"scrolling="no" frameborder="0" hidefocus="true"style="text-align:center;vertical-align:middle;border-style:none;marg in:0px;width:100%;height:55px" src="PhotoUpload.aspx"></iframe></div><div id="divUploadMessage"style="padding-top:4px;display:none"></div><div id="divUploadProgress"style="padding-top:4px;display:none"><span style="font-size:12px;">图片上传中...</span> <div><table border="0" cellpadding="0"cellspacing="2" style="width:100%"><tbody><tr><td id="tdProgress1"> </td><td id="tdProgress2"> </td><td id="tdProgress3"> </td><td id="tdProgress4"> </td><td id="tdProgress5"> </td><td id="tdProgress6"> </td><td id="tdProgress7"> </td><td id="tdProgress8"> </td><td id="tdProgress9"> </td><td id="tdProgress10"> </td></tr></tbody></table></div></div></fieldset></div></form></body></html>PhotoUpload.aspx<%@ Page Language="C#" %><%@ Import Namespace="System.Drawing" %><%@ Import Namespace="System.Web.UI.HtmlControls" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server">private const string SCRIPT_TEMPLATE = "<" + "script " +"type=\"text/javascript\">window.parent.photoUploadComplete('{0}', {1});" + "<" + "/script" + ">";private void Page_Load(object sender, EventArgs e){if (IsPostBack){//Sleeping for 10 seconds, fake delay, You should not it try at home.//System.Threading.Thread.Sleep(10 * 1000);UploadPhoto();}}private void UploadPhoto(){string script = string.Empty;if ((filPhoto.PostedFile != null) &&(filPhoto.PostedFile.ContentLength > 0)){if (!IsValidImageFile(filPhoto)){script = string.Format(SCRIPT_TEMPLATE, "文件类型不正确.", "true");}}else{script = string.Format(SCRIPT_TEMPLATE, "请选择文件.", "true");}if (string.IsNullOrEmpty(script)){//Uploaded file is valid, now we can do whatever we like todo, copying it file system,//saving it in db etc.//Your Logic goes herestring StrFileName = filPhoto.PostedFile.FileName;//获取扩展名int i = stIndexOf(".");string Extension = StrFileName.Substring(i);DateTime dt = DateTime.Now;string fname = dt.Year.ToString("x") +dt.Month.ToString("x") + dt.Day.ToString("x") + dt.Hour.ToString("x") + dt.Minute.ToString("x") + dt.Second.ToString("x") +lisecond.ToString("x");string fpath = Server.MapPath("product_photos") + "/" + fname + Extension;filPhoto.PostedFile.SaveAs(fpath);script = string.Format(SCRIPT_TEMPLATE, "图片上传成功.", "false");}//Now inject the script which will fire when the page is refreshed. ClientScript.RegisterStartupScript(this.GetType(), "uploadNotify", script);}private static bool IsValidImageFile(HtmlInputFile file){try{using (Bitmap bmp = new Bitmap(file.PostedFile.InputStream)) {return true;}}catch (ArgumentException){//throws exception if not valid image}return false;}</script><html xmlns="/1999/xhtml" ><head runat="server"><title>图片上传</title><style type="text/css">input,form,span,div{font-family:Tahoma;font-size:12px;}</style></head><body style="margin:0px"><form id="photoUpload" enctype="multipart/form-data" runat="server"> <div><input id="filPhoto" type="file" runat="server"style="width:300px"/></div><div id="divUpload" style="padding-top:4px"><input id="btnUpload" type="button" value="上传图片" /></div></form></body></html>。