javascript頁面重新整理和跳轉
"window.location.href"、"location.href"是本頁面跳轉 "parent.location.href"是上一層頁面跳轉 "top.location.href"是最外層的頁面跳轉 舉例說明: 如果A,B,C,D都是jsp,D是C的iframe,C是B的iframe,B是A的iframe,如果D中js這樣寫 "window.location.href"、"location.href":D頁面跳轉 "parent.location.href":C頁面跳轉 "top.location.href":A頁面跳轉 如果D頁面中有form的話, <form>: form提交後D頁面跳轉 <form target="_blank">: form提交後彈出新頁面 <form target="_parent">: form提交後C頁面跳轉 <form target="_top"> : form提交後A頁面跳轉 關於頁面重新整理,D 頁面中這樣寫: "parent.location.reload();": C頁面重新整理 (當然,也可以使用子視窗的 opener 物件來獲得父視窗的物件:window.opener.document.location.reload(); ) "top.location.reload();": A頁面重新整理 轉自:http://hi.baidu.com/pannijingling/blog/item/d57f0ddd651360b3cd11660e.html
關於iframe連線跳轉及父與子,子與子之間的呼叫問題
1、網頁中如何實現點選iframe中的一個連結,使整個頁面(不是隻有iframe)跳轉到新的頁面?
答:在連結裡設定target="_parent
如:<a href="2.htm" target="_parent">123</a>
2、一個iframe引用baidu的頁面,整個頁面都會被直接轉向到baidu的頁面,是如何實現的?
在被iframe的頁面上寫入
<script>
document.body.onload = function(){
if(top != self)top.location = self.location;
}
</script>
3、怎麼在父窗體form提交後在iframe顯示頁面?
<input type="radio" name="radiobutton" value="manuscript" onclick="javascript:this.form.action='a.php';this.form.target='iframe的name或ID';this.form.submit()">
4、A網頁連結到B網頁內iframe框架中的1_1.htm檔案,怎麼做?
<a href='1_1.htm' target="框架名">adsf</a>
父子頁面之間的呼叫關係
父:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>顯示圖表</title>
<script src="http://www.ablanxue.com/js/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
var gg="dsafdsafdsafdsafsdaf";
function ggMM() {
alert("2222222222222222222222222222222");
}
function callIframeMethod() {
//document.getElementById("ii").contentWindow.test();
$("#ii")[0].contentWindow.test(); //用jquery呼叫需要加一個[0]
}
function callIframeField() {
alert($("#ii")[0].contentWindow.ff);
}
function callIframeHtml() {
alert($("#ii")[0].contentWindow.$("#dd").val());
//alert($("#ii")[0].contentWindow.document.getElementById("dd").value);
//alert($("#ii")[0].contentWindow.document.getElementById("dd").value);
}
function giveParameter() {
$("#ii")[0].contentWindow.hellobaby="dsafdsafsdafsdafsdafsdafsadfsadfsdafsadfdsaffdsaaaaaaaaaaaaa";
}
</script>
</head>
<body>
<a href="#" onClick="giveParameter();">引數傳遞</a>
<a href="#" onClick="callIframeMethod();">呼叫子iframe方法</a>
<a href="#" onClick="callIframeField();">呼叫子iframe變數</a>
<a href="#" onClick="callIframeHtml();">呼叫子iframe元件</a></br>
<iframe id="ii" src="iframe.html" width="100%" frameborder="0"></iframe>
<iframe id="new" src="newIframe.html" width="100%" frameborder="0"></iframe>
</body>
</html>
子
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>顯示圖表</title>
<script src="http://www.ablanxue.com/js/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
function callLevelFrame() {
var ff=parent.$("#ii")[0].contentWindow.ff;
alert(ff);
}
</script>
</head>
<body>
<a href="#" onClick="callLevelFrame();">呼叫兄弟iframe</a>
<input id="nn" type="text" value="sdafsdfsa"/>
</body>
</html>
子
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>顯示圖表</title>
<script src="http://www.ablanxue.com/js/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
var ff="adfdasfdsafdsafdsaf";
function test() {
alert($("#dd").val());
}
function callMainField() {
alert(parent.gg);
}
function callMainMethod() {
parent.ggMM();
}
function callMainHtml() {
alert(parent.$("#ii").attr("id"));
}
function getParameter() {
alert(window.hellobaby);
}
</script>
</head>
<body>
<a href="#" onClick="getParameter();">接受引數</a>
<a href="#" onClick="callMainMethod();">呼叫子iframe方法</a>
<a href="#" onClick="callMainField();">呼叫主視窗變數</a>
<a href="#" onClick="callMainHtml();">呼叫子iframe元件</a>
<input id="dd" type="text" value="http://www.ablanxue.com123456"/>
</body>
</html>
JS iframe父子頁面元素呼叫方法 | window parent top opener 解釋
翻開那一頁 釋出於 3年前,共有 0 條評論
iframe
父視窗呼叫子視窗
var hasMore = parent.document.getElementByIdx_x_x_x("hasMore").value;
子視窗呼叫父視窗
document.frames["ifrmBoxFrame"].me.preLoadBoxGrid();
window.frames["iframe_ID"].document.getElementByIdx_x_x_x("iframe_document_object"-).object_attribute = attribute_value;
window
是對當前視窗自身的引用
如:
window.returnValue = ret;
window.close();
top
返回頂層視窗,即瀏覽器視窗。
如:
top.frames[tabID].location = url;
top.document.frames("ifrmBoxFrame").me.executeQueryCond();
parent
返回父視窗
如:
parent.$("Insheet_FrameTable").src = "";
parent.frames["Insheet_FrameSheetList"].initInsheetList(false);
opener
opener用於在window.open的頁面引用執行該window.open方法的的頁面的物件。例如:A頁面通過window.open()方法彈出了B頁面,在B頁面中就可以通過opener來引用A頁面,這樣就可以通過這個物件來對A頁面進行操作。
如:
var url="editarable.htm?arableID=" + curArableID+"&isDeleteDisabled="+$("Btn_delArable").disabled;
window.open(url, "viewArable", "height=" + h + ",width=" + w + ",left=" + x + ",top=" +y + ",status=no,toolbar=no,menubar=no,location=no");
//第二個頁面中 使用opener
if(!(window.opener==null || window.opener.closed)){
window.opener.me.queryArable();
}
window.close();
首先來說說 parent.window與top.window的用法
"window.location.href"、"location.href"是本頁面跳轉
"parent.location.href"是上一層頁面跳轉
"top.location.href"是最外層的頁面跳轉
舉例說明:
如果A,B,C,D都是jsp,D是C的iframe,C是B的iframe,B是A的iframe,如果D中js這樣寫
"window.location.href"、"location.href":D頁面跳轉
"parent.location.href":C頁面跳轉
"top.location.href":A頁面跳轉
parent.frames("frmEletroDocAttachInsert").frames("fraEletroDocAttachView").document.location = "about:blank";
top.document.frames('ifrmMainFrame').location.reload();
有兩個視窗: A視窗(父),B視窗(模態)
A視窗裡有一個DATAGRID,一個按鈕。
點選按鈕時,彈出B視窗(模態)。在B視窗中新增資料,提交後,要求B視窗自關閉,然後重新整理A視窗(父)
程式碼如下:
<script type="text/javascript">
function openSubWin()
{
window.showModalDialog('b.html', 'newwindow', 'height=500, width=400, top=0, left=0, toolbar=no, menubar=yes, scrollbars=yes,resizable=yes,location=no, status=no');
window.location.reload();
}
</script>
彈出子窗體b.html , 當關閉子窗體時 觸發父頁面重新整理
最近做物資系統的時候,又涉及到模態視窗的問題了,上次做的時候沒遇到這次這麼多東西,記下來吧
父視窗 js方法
程式碼如下:
function openwin(id){
var answer=window.showModalDialog("demand.do?method=queryBOM&mdid="+id+"&d="+escape(new Date()),window.self,"dialogWidth:700px;dialogHeight:620px:center:yes");
if(answer==1){
window.location.href = "demand.do?method=selmd&d="+escape(new Date()); //轉到處理頁面
//window.location.reload(); 重新整理父視窗
//winow.location.reload(true);
}
}
加個escape(new Date()) 避免讀取快取,當然也可以在子視窗中,加入
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
子視窗 js 方法:
程式碼如下:
function reVal(){
window.returnValue=1; //父視窗中 answer的值
window.close();
}
開啟模態視窗之後,父視窗會一直等待子視窗返回個值,如果是表單提交或是button就執行reVal()方法
返回answer的值,window.returnValue=1 這個地方我測試了 好像只能返回String型別的,陣列型別的不好使
在子視窗中使用 window.opener.location.reload(); 不好使,不試用於模態視窗,window.opern() 好使
還有個問題是:在模態視窗裡form 提交會彈出新視窗,這個問題簡單就在<head>裡面加個<base target="_self">
就可以搞定,注:我剛開始是不想通過form提交的,用js window.location.href 跳轉到不同的action去處理,發現
<base target="_self"> 就不起作用了,似乎 <base target="_self"> 只是針對form action="" 才起作用,這個地方應該可以用iframe 去實現。
用js判斷頁面重新整理或關閉的方法(onbeforeunload與onunload事件)
2014-09-14 12:51 | 11099人閱讀 | 來源
Onunload,onbeforeunload都是在重新整理或關閉時呼叫,可以在<script>指令碼中通過window.onunload來指定或者在<body>裡指定。區別在於onbeforeunload在onunload之前執行,它還可以阻止onunload的執行。
Onbeforeunload也是在頁面重新整理或關閉時呼叫,Onbeforeunload是正要去伺服器讀取新的頁面時呼叫,此時還沒開始讀取;而onunload則已經從伺服器上讀到了需要載入的新的頁面,在即將替換掉當前頁面時呼叫。Onunload是無法阻止頁面的更新和關閉的。而 Onbeforeunload 可以做到。
頁面載入時只執行onload
頁面關閉時先執行onbeforeunload,最後onunload
頁面重新整理時先執行onbeforeunload,然後onunload,最後onload。
1、onbeforeunload事件:
說明:目前三大主流瀏覽器中firefox和IE都支援onbeforeunload事件,opera尚未支援。
用法:
・object.onbeforeunload = handler
・<element onbeforeunload = “handler” … ></element>
描述:
事件觸發的時候彈出一個有確定和取消的對話方塊,確定則離開頁面,取消則繼續待在本頁。handler可以設一個返回值作為該對話方塊的顯示文字。
觸發於:
・關閉瀏覽器視窗
・通過位址列或收藏夾前往其他頁面的時候
・點選返回,前進,重新整理,主頁其中一個的時候
・點選 一個前往其他頁面的url連線的時候
・呼叫以下任意一個事件的時候:click,document write,document open,document close,window close ,window navigate ,window NavigateAndFind,location replace,location reload,form submit.
・當用window open開啟一個頁面,並把本頁的window的名字傳給要開啟的頁面的時候。
・重新賦予location.href的值的時候。
・通過input type=”submit”按鈕提交一個具有指定action的表單的時候。
可以用在以下元素:
・BODY, FRAMESET, window
平臺支援:
IE4+/Win, Mozilla 1.7a+, Netscape 7.2+, Firefox0.9+
示例:
程式碼如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>onbeforeunload測試</title>
<script>
function checkLeave(){
event.returnValue="確定離開當前頁面嗎?";
}
</script>
</head>
<body onbeforeunload="checkLeave()">
</body>
</html>
2、onunload事件
用法:
・object.onbeforeunload = handler
・<element onbeforeunload = "handler"></element>
描述:
當使用者關閉一個頁面時觸發 onunload 事件。
觸發於:
・關閉瀏覽器視窗
・通過位址列或收藏夾前往其他頁面的時候
・點選返回,前進,重新整理,主頁其中一個的時候
・點選 一個前往其他頁面的url連線的時候
・呼叫以下任意一個事件的時候:click,document write,document open,document close,window close ,window navigate ,window NavigateAndFind,location replace,location reload,form submit.
・當用window open開啟一個頁面,並把本頁的window的名字傳給要開啟的頁面的時候。
・重新賦予location.href的值的時候。
・通過input type=”submit”按鈕提交一個具有指定action的表單的時候。
示例:
程式碼如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>onunload測試</title>
<script>
function checkLeave(){
alert("歡迎下次再來!");
}
</script>
</head>
<body onunload="checkLeave()">
</body>
</html>
一個判斷頁面是否真的關閉和重新整理的好方法:
程式碼如下:
window.onbeforeunload=function (){
alert("===onbeforeunload===");
if(event.clientX>document.body.clientWidth && event.clientY < 0 || event.altKey){
alert("你關閉了瀏覽器");
}else{
alert("你正在重新整理頁面");
}
}
這段程式碼就是判斷觸發onbeforeunload事件時,滑鼠是否點選了關閉按鈕,或者按了ALT+F4來關閉網頁,如果是,則認為系統是關閉網頁,否則在認為系統是重新整理網頁。
如何實現重新整理當前頁面呢?藉助js你將無所不能。
1,reload 方法,該方法強迫瀏覽器重新整理當前頁面。
語法:location.reload([bForceGet])
引數: bForceGet, 可選引數, 預設為 false,從客戶端快取裡取當前頁。true, 則以 GET 方式,從服務端取最新的頁面, 相當於客戶端點選 F5("重新整理")
2,replace 方法,該方法通過指定URL替換當前快取在歷史裡(客戶端)的專案,因此當使用replace方法之後,你不能通過“前進”和“後退”來訪問已經被替換的URL。
語法: location.replace(URL)
通常使用: location.reload() 或者是 history.go(0) 來做。
此方法類似客戶端點F5重新整理頁面,所以頁面method="post"時,會出現"網頁過期"的提示。
因為Session的安全保護機制。
當呼叫 location.reload() 方法時, aspx頁面此時在服務端記憶體裡已經存在, 因此必定是 IsPostback 的。
如果有這種應用: 需要重新載入該頁面,也就是說期望頁面能夠在服務端重新被建立,期望是 Not IsPostback 的。
這裡,location.replace() 就可以完成此任務。被replace的頁面每次都在服務端重新生成。
程式碼: location.replace(location.href);
返回並重新整理頁面:
location.replace(document.referrer);
document.referrer //前一個頁面的URL
不要用 history.go(-1),或 history.back();來返回並重新整理頁面,這兩種方法不會重新整理頁面。
附:
Javascript重新整理頁面的幾種方法:
程式碼如下:
1,history.go(0)
2,location.reload()
3,location=location
4,location.assign(location)
5,document.execCommand('Refresh')
6,window.navigate(location)
7,location.replace(location)
8,document.URL=location.href
自動重新整理頁面的方法:
1,頁面自動重新整理:把如下程式碼加入<head>區域中
程式碼如下:
<meta http-equiv="refresh" content="20">
其中20指每隔20秒重新整理一次頁面.
2,頁面自動跳轉:把如下程式碼加入<head>區域中
程式碼如下:
<meta http-equiv="refresh" content="20;url=http://www.jb51.net">
其中20指隔20秒後跳轉到http://www.jb51.net頁面
3,頁面自動重新整理js版
程式碼如下:
<script language="JavaScript">
function myrefresh()
{
window.location.reload();
}
setTimeout('myrefresh()',1000); //指定1秒重新整理一次
</script>
4,JS重新整理框架的指令碼語句
程式碼如下:
//重新整理包含該框架的頁面用
<script language=JavaScript>
parent.location.reload();
</script>
//子視窗重新整理父視窗
<script language=JavaScript>
self.opener.location.reload();
</script>
( 或 <a href="javascript:opener.location.reload()">重新整理</a> )
//重新整理另一個框架的頁面用
<script language=JavaScript>
parent.另一FrameID.location.reload();
</script>
如果想關閉視窗時重新整理或想開窗時重新整理,在<body>中呼叫以下語句即可。
程式碼如下:
<body onload="opener.location.reload()"> 開窗時重新整理
<body onUnload="opener.location.reload()"> 關閉時重新整理
<script language="javascript">
window.opener.document.location.reload()
</script>
一、先來看一個簡單的例子:
下面以三個頁面分別命名為frame.html、top.html、bottom.html為例來具體說明如何做。
frame.html 由上(top.html)下(bottom.html)兩個頁面組成,程式碼如下:
程式碼如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> frame </TITLE>
</HEAD>
<frameset rows="50%,50%">
<frame name=top src="top.html">
<frame name=bottom src="bottom.html">
</frameset>
</HTML>
現在假設top.html (即上面的頁面) 有七個button來實現對bottom.html (即下面的頁面) 的重新整理,可以用以下七種語句,哪個好用自己看著辦了。
top.html 頁面的程式碼如下:
程式碼如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> top.html </TITLE>
</HEAD>
<BODY>
<input type=button value="重新整理1" onclick="window.parent.frames[1].location.reload()"><br>
<input type=button value="重新整理2" onclick="window.parent.frames.bottom.location.reload()"><br>
<input type=button value="重新整理3" onclick="window.parent.frames['bottom'].location.reload()"><br>
<input type=button value="重新整理4" onclick="window.parent.frames.item(1).location.reload()"><br>
<input type=button value="重新整理5" onclick="window.parent.frames.item('bottom').location.reload()"><br>
<input type=button value="重新整理6" onclick="window.parent.bottom.location.reload()"><br>
<input type=button value="重新整理7" onclick="window.parent['bottom'].location.reload()"><br>
</BODY>
</HTML>
下面是bottom.html頁面原始碼,為了證明下方頁面的確被重新整理了,在裝載完頁面彈出一個對話方塊。
程式碼如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> bottom.html </TITLE>
</HEAD>
<BODY onload="alert('我被載入了!')">
<h1>This is the content in bottom.html.</h1>
</BODY>
</HTML>
解釋一下:
程式碼如下:
1.window指代的是當前頁面,例如對於此例它指的是top.html頁面。
2.parent指的是當前頁面的父頁面,也就是包含它的框架頁面。例如對於此例它指的是framedemo.html。
3.frames是window物件,是一個陣列。代表著該框架內所有子頁面。
4.item是方法。返回陣列裡面的元素。
5.如果子頁面也是個框架頁面,裡面還是其它的子頁面,那麼上面的有些方法可能不行。
附:
Javascript重新整理頁面的幾種方法:
1 history.go(0)
2 location.reload()
3 location=location
4 location.assign(location)
5 document.execCommand('Refresh')
6 window.navigate(location)
7 location.replace(location)
8 document.URL=location.href
二、自動重新整理頁面
1.頁面自動重新整理:把如下程式碼加入<head>區域中
<meta http-equiv="refresh" content="20">
其中20指每隔20秒重新整理一次頁面.
2.頁面自動跳轉:把如下程式碼加入<head>區域中
<meta http-equiv="refresh" content="20;url=http://www.jb51.net">
其中20指隔20秒後跳轉到http://www.jb51.net頁面
3.頁面自動重新整理js版
<script language="JavaScript"> function myrefresh() { window.location.reload(); } setTimeout('myrefresh()',1000); //指定1秒重新整理一次 </script>
[Ctrl+A 全選 注: 如需引入外部Js需重新整理才能執行]
三、java在寫Servler,Action等程式時,要操作返回頁面的話(如談出了視窗,操作完成以後,關閉當前頁面,重新整理父頁面)
程式碼如下:
1 PrintWriter out = response.getWriter();
2 out.write("<script type=\"text/javascript\">");
3 ////子視窗重新整理父視窗
4 out.write("self.opener.location.reload();");
5 //關閉視窗
6 out.write("window.opener=null;");
7 out.write("window.close();");
8 out.write("</script>");
四、JS重新整理框架的指令碼語句
1.如何重新整理包含該框架的頁面用
程式碼如下:
<script language=JavaScript>
parent.location.reload();
</script>
2.子視窗重新整理父視窗
程式碼如下:
<script language=JavaScript>
self.opener.location.reload();
</script>
3.如何重新整理另一個框架的頁面用 (上面的例項以說明了)
程式碼如下:
語句1. window.parent.frames[1].location.reload();
語句2. window.parent.frames.bottom.location.reload();
語句3. window.parent.frames["bottom"].location.reload();
語句4. window.parent.frames.item(1).location.reload();
語句5. window.parent.frames.item('bottom').location.reload();
語句6. window.parent.bottom.location.reload();
語句7. window.parent['bottom'].location.reload();
4.如果想關閉視窗時重新整理或者想開窗時重新整理的話,在<body>中呼叫以下語句即可。
<body onload="opener.location.reload()">
開窗時重新整理
<body onUnload="opener.location.reload()">
關閉時重新整理
程式碼如下:
<script language="javascript">
window.opener.document.location.reload()
</script>
關於iframe連線跳轉及父與子,子與子之間的呼叫問題
1、網頁中如何實現點選iframe中的一個連結,使整個頁面(不是隻有iframe)跳轉到新的頁面?
答:在連結裡設定target="_parent
如:<a href="2.htm" target="_parent">123</a>
2、一個iframe引用baidu的頁面,整個頁面都會被直接轉向到baidu的頁面,是如何實現的?
在被iframe的頁面上寫入
<script>
document.body.onload = function(){
if(top != self)top.location = self.location;
}
</script>
3、怎麼在父窗體form提交後在iframe顯示頁面?
<input type="radio" name="radiobutton" value="manuscript" onclick="javascript:this.form.action='a.php';this.form.target='iframe的name或ID';this.form.submit()">
4、A網頁連結到B網頁內iframe框架中的1_1.htm檔案,怎麼做?
<a href='1_1.htm' target="框架名">adsf</a>
父子頁面之間的呼叫關係
父:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>顯示圖表</title>
<script src="http://www.ablanxue.com/js/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
var gg="dsafdsafdsafdsafsdaf";
function ggMM() {
alert("2222222222222222222222222222222");
}
function callIframeMethod() {
//document.getElementById("ii").contentWindow.test();
$("#ii")[0].contentWindow.test(); //用jquery呼叫需要加一個[0]
}
function callIframeField() {
alert($("#ii")[0].contentWindow.ff);
}
function callIframeHtml() {
alert($("#ii")[0].contentWindow.$("#dd").val());
//alert($("#ii")[0].contentWindow.document.getElementById("dd").value);
//alert($("#ii")[0].contentWindow.document.getElementById("dd").value);
}
function giveParameter() {
$("#ii")[0].contentWindow.hellobaby="dsafdsafsdafsdafsdafsdafsadfsadfsdafsadfdsaffdsaaaaaaaaaaaaa";
}
</script>
</head>
<body>
<a href="#" onClick="giveParameter();">引數傳遞</a>
<a href="#" onClick="callIframeMethod();">呼叫子iframe方法</a>
<a href="#" onClick="callIframeField();">呼叫子iframe變數</a>
<a href="#" onClick="callIframeHtml();">呼叫子iframe元件</a></br>
<iframe id="ii" src="iframe.html" width="100%" frameborder="0"></iframe>
<iframe id="new" src="newIframe.html" width="100%" frameborder="0"></iframe>
</body>
</html>
子
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>顯示圖表</title>
<script src="http://www.ablanxue.com/js/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
function callLevelFrame() {
var ff=parent.$("#ii")[0].contentWindow.ff;
alert(ff);
}
</script>
</head>
<body>
<a href="#" onClick="callLevelFrame();">呼叫兄弟iframe</a>
<input id="nn" type="text" value="sdafsdfsa"/>
</body>
</html>
子
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>顯示圖表</title>
<script src="http://www.ablanxue.com/js/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
var ff="adfdasfdsafdsafdsaf";
function test() {
alert($("#dd").val());
}
function callMainField() {
alert(parent.gg);
}
function callMainMethod() {
parent.ggMM();
}
function callMainHtml() {
alert(parent.$("#ii").attr("id"));
}
function getParameter() {
alert(window.hellobaby);
}
</script>
</head>
<body>
<a href="#" onClick="getParameter();">接受引數</a>
<a href="#" onClick="callMainMethod();">呼叫子iframe方法</a>
<a href="#" onClick="callMainField();">呼叫主視窗變數</a>
<a href="#" onClick="callMainHtml();">呼叫子iframe元件</a>
<input id="dd" type="text" value="http://www.ablanxue.com123456"/>
</body>
</html>
JS iframe父子頁面元素呼叫方法 | window parent top opener 解釋
翻開那一頁 釋出於 3年前,共有 0 條評論
iframe
父視窗呼叫子視窗
var hasMore = parent.document.getElementByIdx_x_x_x("hasMore").value;
子視窗呼叫父視窗
document.frames["ifrmBoxFrame"].me.preLoadBoxGrid();
window.frames["iframe_ID"].document.getElementByIdx_x_x_x("iframe_document_object"-).object_attribute = attribute_value;
window
是對當前視窗自身的引用
如:
window.returnValue = ret;
window.close();
top
返回頂層視窗,即瀏覽器視窗。
如:
top.frames[tabID].location = url;
top.document.frames("ifrmBoxFrame").me.executeQueryCond();
parent
返回父視窗
如:
parent.$("Insheet_FrameTable").src = "";
parent.frames["Insheet_FrameSheetList"].initInsheetList(false);
opener
opener用於在window.open的頁面引用執行該window.open方法的的頁面的物件。例如:A頁面通過window.open()方法彈出了B頁面,在B頁面中就可以通過opener來引用A頁面,這樣就可以通過這個物件來對A頁面進行操作。
如:
var url="editarable.htm?arableID=" + curArableID+"&isDeleteDisabled="+$("Btn_delArable").disabled;
window.open(url, "viewArable", "height=" + h + ",width=" + w + ",left=" + x + ",top=" +y + ",status=no,toolbar=no,menubar=no,location=no");
//第二個頁面中 使用opener
if(!(window.opener==null || window.opener.closed)){
window.opener.me.queryArable();
}
window.close();
首先來說說 parent.window與top.window的用法
"window.location.href"、"location.href"是本頁面跳轉
"parent.location.href"是上一層頁面跳轉
"top.location.href"是最外層的頁面跳轉
舉例說明:
如果A,B,C,D都是jsp,D是C的iframe,C是B的iframe,B是A的iframe,如果D中js這樣寫
"window.location.href"、"location.href":D頁面跳轉
"parent.location.href":C頁面跳轉
"top.location.href":A頁面跳轉
parent.frames("frmEletroDocAttachInsert").frames("fraEletroDocAttachView").document.location = "about:blank";
top.document.frames('ifrmMainFrame').location.reload();
有兩個視窗: A視窗(父),B視窗(模態)
A視窗裡有一個DATAGRID,一個按鈕。
點選按鈕時,彈出B視窗(模態)。在B視窗中新增資料,提交後,要求B視窗自關閉,然後重新整理A視窗(父)
程式碼如下:
<script type="text/javascript">
function openSubWin()
{
window.showModalDialog('b.html', 'newwindow', 'height=500, width=400, top=0, left=0, toolbar=no, menubar=yes, scrollbars=yes,resizable=yes,location=no, status=no');
window.location.reload();
}
</script>
彈出子窗體b.html , 當關閉子窗體時 觸發父頁面重新整理
最近做物資系統的時候,又涉及到模態視窗的問題了,上次做的時候沒遇到這次這麼多東西,記下來吧
父視窗 js方法
程式碼如下:
function openwin(id){
var answer=window.showModalDialog("demand.do?method=queryBOM&mdid="+id+"&d="+escape(new Date()),window.self,"dialogWidth:700px;dialogHeight:620px:center:yes");
if(answer==1){
window.location.href = "demand.do?method=selmd&d="+escape(new Date()); //轉到處理頁面
//window.location.reload(); 重新整理父視窗
//winow.location.reload(true);
}
}
加個escape(new Date()) 避免讀取快取,當然也可以在子視窗中,加入
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
子視窗 js 方法:
程式碼如下:
function reVal(){
window.returnValue=1; //父視窗中 answer的值
window.close();
}
開啟模態視窗之後,父視窗會一直等待子視窗返回個值,如果是表單提交或是button就執行reVal()方法
返回answer的值,window.returnValue=1 這個地方我測試了 好像只能返回String型別的,陣列型別的不好使
在子視窗中使用 window.opener.location.reload(); 不好使,不試用於模態視窗,window.opern() 好使
還有個問題是:在模態視窗裡form 提交會彈出新視窗,這個問題簡單就在<head>裡面加個<base target="_self">
就可以搞定,注:我剛開始是不想通過form提交的,用js window.location.href 跳轉到不同的action去處理,發現
<base target="_self"> 就不起作用了,似乎 <base target="_self"> 只是針對form action="" 才起作用,這個地方應該可以用iframe 去實現。
用js判斷頁面重新整理或關閉的方法(onbeforeunload與onunload事件)
2014-09-14 12:51 | 11099人閱讀 | 來源
Onunload,onbeforeunload都是在重新整理或關閉時呼叫,可以在<script>指令碼中通過window.onunload來指定或者在<body>裡指定。區別在於onbeforeunload在onunload之前執行,它還可以阻止onunload的執行。
Onbeforeunload也是在頁面重新整理或關閉時呼叫,Onbeforeunload是正要去伺服器讀取新的頁面時呼叫,此時還沒開始讀取;而onunload則已經從伺服器上讀到了需要載入的新的頁面,在即將替換掉當前頁面時呼叫。Onunload是無法阻止頁面的更新和關閉的。而 Onbeforeunload 可以做到。
頁面載入時只執行onload
頁面關閉時先執行onbeforeunload,最後onunload
頁面重新整理時先執行onbeforeunload,然後onunload,最後onload。
1、onbeforeunload事件:
說明:目前三大主流瀏覽器中firefox和IE都支援onbeforeunload事件,opera尚未支援。
用法:
・object.onbeforeunload = handler
・<element onbeforeunload = “handler” … ></element>
描述:
事件觸發的時候彈出一個有確定和取消的對話方塊,確定則離開頁面,取消則繼續待在本頁。handler可以設一個返回值作為該對話方塊的顯示文字。
觸發於:
・關閉瀏覽器視窗
・通過位址列或收藏夾前往其他頁面的時候
・點選返回,前進,重新整理,主頁其中一個的時候
・點選 一個前往其他頁面的url連線的時候
・呼叫以下任意一個事件的時候:click,document write,document open,document close,window close ,window navigate ,window NavigateAndFind,location replace,location reload,form submit.
・當用window open開啟一個頁面,並把本頁的window的名字傳給要開啟的頁面的時候。
・重新賦予location.href的值的時候。
・通過input type=”submit”按鈕提交一個具有指定action的表單的時候。
可以用在以下元素:
・BODY, FRAMESET, window
平臺支援:
IE4+/Win, Mozilla 1.7a+, Netscape 7.2+, Firefox0.9+
示例:
程式碼如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>onbeforeunload測試</title>
<script>
function checkLeave(){
event.returnValue="確定離開當前頁面嗎?";
}
</script>
</head>
<body onbeforeunload="checkLeave()">
</body>
</html>
2、onunload事件
用法:
・object.onbeforeunload = handler
・<element onbeforeunload = "handler"></element>
描述:
當使用者關閉一個頁面時觸發 onunload 事件。
觸發於:
・關閉瀏覽器視窗
・通過位址列或收藏夾前往其他頁面的時候
・點選返回,前進,重新整理,主頁其中一個的時候
・點選 一個前往其他頁面的url連線的時候
・呼叫以下任意一個事件的時候:click,document write,document open,document close,window close ,window navigate ,window NavigateAndFind,location replace,location reload,form submit.
・當用window open開啟一個頁面,並把本頁的window的名字傳給要開啟的頁面的時候。
・重新賦予location.href的值的時候。
・通過input type=”submit”按鈕提交一個具有指定action的表單的時候。
示例:
程式碼如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>onunload測試</title>
<script>
function checkLeave(){
alert("歡迎下次再來!");
}
</script>
</head>
<body onunload="checkLeave()">
</body>
</html>
一個判斷頁面是否真的關閉和重新整理的好方法:
程式碼如下:
window.onbeforeunload=function (){
alert("===onbeforeunload===");
if(event.clientX>document.body.clientWidth && event.clientY < 0 || event.altKey){
alert("你關閉了瀏覽器");
}else{
alert("你正在重新整理頁面");
}
}
這段程式碼就是判斷觸發onbeforeunload事件時,滑鼠是否點選了關閉按鈕,或者按了ALT+F4來關閉網頁,如果是,則認為系統是關閉網頁,否則在認為系統是重新整理網頁。
如何實現重新整理當前頁面呢?藉助js你將無所不能。
1,reload 方法,該方法強迫瀏覽器重新整理當前頁面。
語法:location.reload([bForceGet])
引數: bForceGet, 可選引數, 預設為 false,從客戶端快取裡取當前頁。true, 則以 GET 方式,從服務端取最新的頁面, 相當於客戶端點選 F5("重新整理")
2,replace 方法,該方法通過指定URL替換當前快取在歷史裡(客戶端)的專案,因此當使用replace方法之後,你不能通過“前進”和“後退”來訪問已經被替換的URL。
語法: location.replace(URL)
通常使用: location.reload() 或者是 history.go(0) 來做。
此方法類似客戶端點F5重新整理頁面,所以頁面method="post"時,會出現"網頁過期"的提示。
因為Session的安全保護機制。
當呼叫 location.reload() 方法時, aspx頁面此時在服務端記憶體裡已經存在, 因此必定是 IsPostback 的。
如果有這種應用: 需要重新載入該頁面,也就是說期望頁面能夠在服務端重新被建立,期望是 Not IsPostback 的。
這裡,location.replace() 就可以完成此任務。被replace的頁面每次都在服務端重新生成。
程式碼: location.replace(location.href);
返回並重新整理頁面:
location.replace(document.referrer);
document.referrer //前一個頁面的URL
不要用 history.go(-1),或 history.back();來返回並重新整理頁面,這兩種方法不會重新整理頁面。
附:
Javascript重新整理頁面的幾種方法:
程式碼如下:
1,history.go(0)
2,location.reload()
3,location=location
4,location.assign(location)
5,document.execCommand('Refresh')
6,window.navigate(location)
7,location.replace(location)
8,document.URL=location.href
自動重新整理頁面的方法:
1,頁面自動重新整理:把如下程式碼加入<head>區域中
程式碼如下:
<meta http-equiv="refresh" content="20">
其中20指每隔20秒重新整理一次頁面.
2,頁面自動跳轉:把如下程式碼加入<head>區域中
程式碼如下:
<meta http-equiv="refresh" content="20;url=http://www.jb51.net">
其中20指隔20秒後跳轉到http://www.jb51.net頁面
3,頁面自動重新整理js版
程式碼如下:
<script language="JavaScript">
function myrefresh()
{
window.location.reload();
}
setTimeout('myrefresh()',1000); //指定1秒重新整理一次
</script>
4,JS重新整理框架的指令碼語句
程式碼如下:
//重新整理包含該框架的頁面用
<script language=JavaScript>
parent.location.reload();
</script>
//子視窗重新整理父視窗
<script language=JavaScript>
self.opener.location.reload();
</script>
( 或 <a href="javascript:opener.location.reload()">重新整理</a> )
//重新整理另一個框架的頁面用
<script language=JavaScript>
parent.另一FrameID.location.reload();
</script>
如果想關閉視窗時重新整理或想開窗時重新整理,在<body>中呼叫以下語句即可。
程式碼如下:
<body onload="opener.location.reload()"> 開窗時重新整理
<body onUnload="opener.location.reload()"> 關閉時重新整理
<script language="javascript">
window.opener.document.location.reload()
</script>
一、先來看一個簡單的例子:
下面以三個頁面分別命名為frame.html、top.html、bottom.html為例來具體說明如何做。
frame.html 由上(top.html)下(bottom.html)兩個頁面組成,程式碼如下:
程式碼如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> frame </TITLE>
</HEAD>
<frameset rows="50%,50%">
<frame name=top src="top.html">
<frame name=bottom src="bottom.html">
</frameset>
</HTML>
現在假設top.html (即上面的頁面) 有七個button來實現對bottom.html (即下面的頁面) 的重新整理,可以用以下七種語句,哪個好用自己看著辦了。
top.html 頁面的程式碼如下:
程式碼如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> top.html </TITLE>
</HEAD>
<BODY>
<input type=button value="重新整理1" onclick="window.parent.frames[1].location.reload()"><br>
<input type=button value="重新整理2" onclick="window.parent.frames.bottom.location.reload()"><br>
<input type=button value="重新整理3" onclick="window.parent.frames['bottom'].location.reload()"><br>
<input type=button value="重新整理4" onclick="window.parent.frames.item(1).location.reload()"><br>
<input type=button value="重新整理5" onclick="window.parent.frames.item('bottom').location.reload()"><br>
<input type=button value="重新整理6" onclick="window.parent.bottom.location.reload()"><br>
<input type=button value="重新整理7" onclick="window.parent['bottom'].location.reload()"><br>
</BODY>
</HTML>
下面是bottom.html頁面原始碼,為了證明下方頁面的確被重新整理了,在裝載完頁面彈出一個對話方塊。
程式碼如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> bottom.html </TITLE>
</HEAD>
<BODY onload="alert('我被載入了!')">
<h1>This is the content in bottom.html.</h1>
</BODY>
</HTML>
解釋一下:
程式碼如下:
1.window指代的是當前頁面,例如對於此例它指的是top.html頁面。
2.parent指的是當前頁面的父頁面,也就是包含它的框架頁面。例如對於此例它指的是framedemo.html。
3.frames是window物件,是一個陣列。代表著該框架內所有子頁面。
4.item是方法。返回陣列裡面的元素。
5.如果子頁面也是個框架頁面,裡面還是其它的子頁面,那麼上面的有些方法可能不行。
附:
Javascript重新整理頁面的幾種方法:
1 history.go(0)
2 location.reload()
3 location=location
4 location.assign(location)
5 document.execCommand('Refresh')
6 window.navigate(location)
7 location.replace(location)
8 document.URL=location.href
二、自動重新整理頁面
1.頁面自動重新整理:把如下程式碼加入<head>區域中
<meta http-equiv="refresh" content="20">
其中20指每隔20秒重新整理一次頁面.
2.頁面自動跳轉:把如下程式碼加入<head>區域中
<meta http-equiv="refresh" content="20;url=http://www.jb51.net">
其中20指隔20秒後跳轉到http://www.jb51.net頁面
3.頁面自動重新整理js版
<script language="JavaScript"> function myrefresh() { window.location.reload(); } setTimeout('myrefresh()',1000); //指定1秒重新整理一次 </script>
[Ctrl+A 全選 注: 如需引入外部Js需重新整理才能執行]
三、java在寫Servler,Action等程式時,要操作返回頁面的話(如談出了視窗,操作完成以後,關閉當前頁面,重新整理父頁面)
程式碼如下:
1 PrintWriter out = response.getWriter();
2 out.write("<script type=\"text/javascript\">");
3 ////子視窗重新整理父視窗
4 out.write("self.opener.location.reload();");
5 //關閉視窗
6 out.write("window.opener=null;");
7 out.write("window.close();");
8 out.write("</script>");
四、JS重新整理框架的指令碼語句
1.如何重新整理包含該框架的頁面用
程式碼如下:
<script language=JavaScript>
parent.location.reload();
</script>
2.子視窗重新整理父視窗
程式碼如下:
<script language=JavaScript>
self.opener.location.reload();
</script>
3.如何重新整理另一個框架的頁面用 (上面的例項以說明了)
程式碼如下:
語句1. window.parent.frames[1].location.reload();
語句2. window.parent.frames.bottom.location.reload();
語句3. window.parent.frames["bottom"].location.reload();
語句4. window.parent.frames.item(1).location.reload();
語句5. window.parent.frames.item('bottom').location.reload();
語句6. window.parent.bottom.location.reload();
語句7. window.parent['bottom'].location.reload();
4.如果想關閉視窗時重新整理或者想開窗時重新整理的話,在<body>中呼叫以下語句即可。
<body onload="opener.location.reload()">
開窗時重新整理
<body onUnload="opener.location.reload()">
關閉時重新整理
程式碼如下:
<script language="javascript">
window.opener.document.location.reload()
</script>
相關文章
- javascript控制頁面(含iframe進行頁面跳轉)跳轉、重新整理的方法彙總JavaScript
- javascript 跳轉頁面JavaScript
- JavaScript 頁面跳轉效果JavaScript
- JavaScript頁面跳轉程式碼JavaScript
- ASP.NET頁面重新整理和定時跳轉ASP.NET
- Javascript跳轉頁面和開啟新視窗等方法JavaScript
- HTML meta refresh 重新整理與跳轉(重定向)頁面HTML
- JavaScript禁用頁面重新整理JavaScript
- vue頁面跳轉Vue
- Flutter頁面跳轉Flutter
- js頁面跳轉JS
- js頁面跳轉的問題(跳轉到父頁面、最外層頁面、本頁面)JS
- react跳轉url,跳轉外鏈,新頁面開啟頁面React
- js在一定時間內跳轉頁面及各種頁面重新整理JS
- js跳轉頁面方法(轉)JS
- Flutter:如何跳轉頁面?Flutter
- router跳轉page頁面
- ios跳轉到通用頁面iOS
- JS實現各種級別直接的頁面跳轉@重新整理頁面@框架集的綜合案例JS框架
- PHP頁面跳轉如何實現延時跳轉PHP
- Flutter頁面保活及保持頁面跳轉位置Flutter
- javascript重新整理當前頁面程式碼JavaScript
- asp.net中一個頁面跳轉,後一個頁面操作內容後返回先前頁面,並使得先前頁面資料重新整理ASP.NET
- nginx 設定 404 500 頁面跳轉到指定頁面Nginx
- php怎麼直接跳轉頁面PHP
- PHP中實現頁面跳轉PHP
- APP直接跳轉設定頁面APP
- 框架頁中Silverlight和Web頁面之間跳轉和返回框架Web
- 如何讓兩個頁面跳轉但是不重新整理頁面。返回時前一個頁面開始選擇的資料還在
- 解決手機端和 PC 端跳轉不同頁面
- 日常問題 頁面跳轉 $_SESSION 失效Session
- 微信小程式頁面跳轉傳參微信小程式
- [分享]iOS開發-頁面間跳轉iOS
- “asp.net頁面跳轉”補遺ASP.NET
- php 跳轉頁面之前彈窗提示PHP
- 直擊根源:vue專案微信小程式頁面跳轉web-view不重新整理Vue微信小程式WebView
- JS實現頁面跳轉或者重新整理後保留點選新增的class樣式JS
- 如何處理手機端和 PC 端跳轉不同頁面