关于IFRAME的一些小应用
生活随笔
收集整理的這篇文章主要介紹了
关于IFRAME的一些小应用
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Frame可以在網(wǎng)頁內(nèi)嵌入另一個頁面,類似“畫中畫”形式。
標記的使用格式是:?
<Iframe?src="URL"?width="x"?height="x"?scrolling="[OPTION]"?frameborder="x"></iframe>?
src:文件的路徑,既可是HTML文件,也可以是文本、ASP等;?
width、height:"畫中畫"區(qū)域的寬與高;?
scrolling:當SRC的指定的HTML文件在指定的區(qū)域不顯不完時,滾動選項,如果設置為NO,則不出現(xiàn)滾動條;如為Auto:則自動出??現(xiàn)滾動條;如為Yes,則顯示;?
FrameBorder:區(qū)域邊框的寬度,為了讓“畫中畫“與鄰近的內(nèi)容相融合,常設置為0。?
比如:?
<Iframe?src="[url]http://www.IFrame.com/xyz[/url]"??width="250"?height="200"?scrolling="no"?frameborder="0"></iframe>
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
窗口與浮動幀之間的相互控制
在腳本語言與對象層次中,包含Iframe的窗口我們稱之為父窗體,而浮動幀則稱為子窗體,弄清這兩者的關系很重要,因為要在父窗體中訪問子窗體或相反都必須清楚對象層次,才能通過程序來訪問并控制窗體。
?
1、在父窗體中訪問并控制子窗體中的對象?
??? 在父窗體中,Iframe即子窗體是document對象的一個子對象,可以直接在腳本中訪問子窗體中的對象。?
?? ?現(xiàn)在就有一個問題,即,我們怎樣來控制這個Iframe,這里需要講一下Iframe對象。當我們給這個標記設置了ID?屬性后,就可通過文檔對象模型DOM對Iframe所含的HTML進行一系列控制。?
?? 比如在example.htm里嵌入test.htm文件,并控制test.htm里一些標記對象:?
<Iframe?src="test.htm"?id="test"?width="250"?height="200"?scrolling="no"?frameborder="0"></iframe>?
test.htm文件代碼為:?
<html>?
<body>?
<h1?id="myH1">hello,my?boy</h1>?
</body>?
</html>?
如我們要改變ID號為myH1的H1標記里的文字為hello,my?dear,則可用:?
document.myH1.innerText="hello,my?dear"(其中,document可省)?
在example.htm文件中,Iframe標記對象所指的子窗體與一般的DHTML對象模型一致,對對象訪問控制方式一樣,就不再贅述。?
2、在子窗體中訪問并控制父窗體中對象?
在子窗體中我們可以通過其parent即父(雙親)對象來訪問父窗口中的對象。?
如example.htm:?
<html>?
<body?οnclick="alert(tt.myH1.innerHTML)">?
<Iframe?name="tt"?src="frame1.htm"?width="250"?height="200"?scrolling="no"?frameborder="0"></iframe>?
<h1?id="myH2">hello,my?wife</h1>?
</body>?
</html>?
如果要在frame1.htm中訪問ID號為myH2中的標題文字并將之改為"hello,my?friend",我們就可以這樣寫:?
parent.myH2.innerText="hello,my?friend"?
這里parent對象就代表當前窗體(example.htm所在窗體),要在子窗體中訪問父窗體中的對象,無一例外都通過parent對象來進行。?
Iframe雖然內(nèi)嵌在另一個HTML文件中,但它保持相對的獨立,是一個“獨立王國“喲,在單一HTML中的特性同樣適用于浮動幀中。?
試想一下,通過Iframe標記,我們可將那些不變的內(nèi)容以Iframe來表示,這樣,不必重復寫相同的內(nèi)容,這有點象程序設計中的過程或函數(shù),減省了多少繁瑣的手工勞動!另外,至關重要的是,它使頁面的修改更為可行,因為,不必因為版式的調(diào)整而修改每個頁面,你只需修改一個父窗體的版式即可了。?
要注意的是,Nestscape6.0之前版本不支持Iframe標記。?
例子:
1<iframe?src="頁面"?width="寬度"??height="高度"?align="排列可以是left或right,center"?scrolling="是否有滾動條可以填no或yes"></iframe>?
<IFRAME?frameBorder=0?frameSpacing=0?height=25?marginHeight=0?marginWidth=0?scrolling=no?name=main?src="bgm/bgm.html"?width=300></IFRAME>
?
2用了iframe后?發(fā)現(xiàn)滾動條不漂亮?想用2個圖片來代替↑↓?
應該怎么實現(xiàn)呢?
回答:
用下列代碼替換網(wǎng)頁的<title>..</title>?
<SCRIPT?LANGUAGE="javascript">
function?scroll(n)
{temp=n;
Out1.scrollTop=Out1.scrollTop+temp;
if?(temp==0)?return;
setTimeout("scroll(temp)",80);
}
</SCRIPT>
<TABLE?WIDTH="330">
<TR>?
<TD?WIDTH="304"?VALIGN="TOP"?ROWSPAN="2"?>?
<DIV?ID=Out1?STYLE="width:100%;?height:100;overflow:?hidden?;border-style:dashed;border-width:?1px,1px,1px,1px;">?
文字<BR>?文字<BR>
文字<BR>?
文字<BR>
文字
<BR>
<BR>
</DIV>
</TD>
<TD?WIDTH="14"?VALIGN="TOP"><IMG?SRC="photo/up0605.gif"?WIDTH="14"?HEIGHT="20"?οnmοuseοver="scroll(-1)"?οnmοuseοut="scroll(0)"?οnmοusedοwn="scroll(-3)"?BORDER="0"?ALT="按下鼠標速度會更快!"></TD>
</TR>
<TR>
<TD?WIDTH="14"?VALIGN="BOTTOM"><IMG?SRC="photo/down0605.gif"?οnmοuseοver="scroll(1)"?οnmοuseοut="scroll(0)"??οnmοusedοwn="scroll(3)"?BORDER="0"?WIDTH="15"?HEIGHT="21"?ALT="按下鼠標速度會更快!"></TD>
</TR>
</TABLE>
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
下面這段代碼可以實現(xiàn)IFrame自適應高度,即隨著頁面的長度,自動適應以免除頁面和IFrame同時出現(xiàn)滾動條。?
源代碼如下
<script?type="text/javascript">
//**?iframe自動適應頁面?**//
//輸入你希望根據(jù)頁面高度自動調(diào)整高度的iframe的名稱的列表
//用逗號把每個iframe的ID分隔.?例如:?["myframe1",?"myframe2"],可以只有一個窗體,則不用逗號。
//定義iframe的ID
var?iframeids=["test"]
//如果用戶的瀏覽器不支持iframe是否將iframe隱藏?yes?表示隱藏,no表示不隱藏
var?iframehide="yes"
function?dyniframesize()?
{
var?dyniframe=new?Array()
for?(i=0;?i<iframeids.length;?i++)
{
if?(document.getElementById)
{
//自動調(diào)整iframe高度
dyniframe[dyniframe.length]?=?document.getElementById(iframeids);
if?(dyniframe?&&?!window.opera)
{
dyniframe.style.display="block"
if?(dyniframe.contentDocument?&&?dyniframe.contentDocument.body.offsetHeight)?//如果用戶的瀏覽器是NetScape
dyniframe.height?=?dyniframe.contentDocument.body.offsetHeight;?
else?if?(dyniframe.Document?&&?dyniframe.Document.body.scrollHeight)?//如果用戶的瀏覽器是IE
dyniframe.height?=?dyniframe.Document.body.scrollHeight;
}
}
//根據(jù)設定的參數(shù)來處理不支持iframe的瀏覽器的顯示問題
if?((document.all?||?document.getElementById)?&&?iframehide=="no")
{
var?tempobj=document.all??document.all[iframeids]?:?document.getElementById(iframeids)
tempobj.style.display="block"
}
}
}
if?(window.addEventListener)
window.addEventListener("load",?dyniframesize,?false)
else?if?(window.attachEvent)
window.attachEvent("onload",?dyniframesize)
else
window.οnlοad=dyniframesize
</script>
標記的使用格式是:?
<Iframe?src="URL"?width="x"?height="x"?scrolling="[OPTION]"?frameborder="x"></iframe>?
src:文件的路徑,既可是HTML文件,也可以是文本、ASP等;?
width、height:"畫中畫"區(qū)域的寬與高;?
scrolling:當SRC的指定的HTML文件在指定的區(qū)域不顯不完時,滾動選項,如果設置為NO,則不出現(xiàn)滾動條;如為Auto:則自動出??現(xiàn)滾動條;如為Yes,則顯示;?
FrameBorder:區(qū)域邊框的寬度,為了讓“畫中畫“與鄰近的內(nèi)容相融合,常設置為0。?
比如:?
<Iframe?src="[url]http://www.IFrame.com/xyz[/url]"??width="250"?height="200"?scrolling="no"?frameborder="0"></iframe>
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
窗口與浮動幀之間的相互控制
在腳本語言與對象層次中,包含Iframe的窗口我們稱之為父窗體,而浮動幀則稱為子窗體,弄清這兩者的關系很重要,因為要在父窗體中訪問子窗體或相反都必須清楚對象層次,才能通過程序來訪問并控制窗體。
?
1、在父窗體中訪問并控制子窗體中的對象?
??? 在父窗體中,Iframe即子窗體是document對象的一個子對象,可以直接在腳本中訪問子窗體中的對象。?
?? ?現(xiàn)在就有一個問題,即,我們怎樣來控制這個Iframe,這里需要講一下Iframe對象。當我們給這個標記設置了ID?屬性后,就可通過文檔對象模型DOM對Iframe所含的HTML進行一系列控制。?
?? 比如在example.htm里嵌入test.htm文件,并控制test.htm里一些標記對象:?
<Iframe?src="test.htm"?id="test"?width="250"?height="200"?scrolling="no"?frameborder="0"></iframe>?
test.htm文件代碼為:?
<html>?
<body>?
<h1?id="myH1">hello,my?boy</h1>?
</body>?
</html>?
如我們要改變ID號為myH1的H1標記里的文字為hello,my?dear,則可用:?
document.myH1.innerText="hello,my?dear"(其中,document可省)?
在example.htm文件中,Iframe標記對象所指的子窗體與一般的DHTML對象模型一致,對對象訪問控制方式一樣,就不再贅述。?
2、在子窗體中訪問并控制父窗體中對象?
在子窗體中我們可以通過其parent即父(雙親)對象來訪問父窗口中的對象。?
如example.htm:?
<html>?
<body?οnclick="alert(tt.myH1.innerHTML)">?
<Iframe?name="tt"?src="frame1.htm"?width="250"?height="200"?scrolling="no"?frameborder="0"></iframe>?
<h1?id="myH2">hello,my?wife</h1>?
</body>?
</html>?
如果要在frame1.htm中訪問ID號為myH2中的標題文字并將之改為"hello,my?friend",我們就可以這樣寫:?
parent.myH2.innerText="hello,my?friend"?
這里parent對象就代表當前窗體(example.htm所在窗體),要在子窗體中訪問父窗體中的對象,無一例外都通過parent對象來進行。?
Iframe雖然內(nèi)嵌在另一個HTML文件中,但它保持相對的獨立,是一個“獨立王國“喲,在單一HTML中的特性同樣適用于浮動幀中。?
試想一下,通過Iframe標記,我們可將那些不變的內(nèi)容以Iframe來表示,這樣,不必重復寫相同的內(nèi)容,這有點象程序設計中的過程或函數(shù),減省了多少繁瑣的手工勞動!另外,至關重要的是,它使頁面的修改更為可行,因為,不必因為版式的調(diào)整而修改每個頁面,你只需修改一個父窗體的版式即可了。?
要注意的是,Nestscape6.0之前版本不支持Iframe標記。?
例子:
1<iframe?src="頁面"?width="寬度"??height="高度"?align="排列可以是left或right,center"?scrolling="是否有滾動條可以填no或yes"></iframe>?
<IFRAME?frameBorder=0?frameSpacing=0?height=25?marginHeight=0?marginWidth=0?scrolling=no?name=main?src="bgm/bgm.html"?width=300></IFRAME>
?
2用了iframe后?發(fā)現(xiàn)滾動條不漂亮?想用2個圖片來代替↑↓?
應該怎么實現(xiàn)呢?
回答:
用下列代碼替換網(wǎng)頁的<title>..</title>?
<SCRIPT?LANGUAGE="javascript">
function?scroll(n)
{temp=n;
Out1.scrollTop=Out1.scrollTop+temp;
if?(temp==0)?return;
setTimeout("scroll(temp)",80);
}
</SCRIPT>
<TABLE?WIDTH="330">
<TR>?
<TD?WIDTH="304"?VALIGN="TOP"?ROWSPAN="2"?>?
<DIV?ID=Out1?STYLE="width:100%;?height:100;overflow:?hidden?;border-style:dashed;border-width:?1px,1px,1px,1px;">?
文字<BR>?文字<BR>
文字<BR>?
文字<BR>
文字
<BR>
<BR>
</DIV>
</TD>
<TD?WIDTH="14"?VALIGN="TOP"><IMG?SRC="photo/up0605.gif"?WIDTH="14"?HEIGHT="20"?οnmοuseοver="scroll(-1)"?οnmοuseοut="scroll(0)"?οnmοusedοwn="scroll(-3)"?BORDER="0"?ALT="按下鼠標速度會更快!"></TD>
</TR>
<TR>
<TD?WIDTH="14"?VALIGN="BOTTOM"><IMG?SRC="photo/down0605.gif"?οnmοuseοver="scroll(1)"?οnmοuseοut="scroll(0)"??οnmοusedοwn="scroll(3)"?BORDER="0"?WIDTH="15"?HEIGHT="21"?ALT="按下鼠標速度會更快!"></TD>
</TR>
</TABLE>
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
下面這段代碼可以實現(xiàn)IFrame自適應高度,即隨著頁面的長度,自動適應以免除頁面和IFrame同時出現(xiàn)滾動條。?
源代碼如下
<script?type="text/javascript">
//**?iframe自動適應頁面?**//
//輸入你希望根據(jù)頁面高度自動調(diào)整高度的iframe的名稱的列表
//用逗號把每個iframe的ID分隔.?例如:?["myframe1",?"myframe2"],可以只有一個窗體,則不用逗號。
//定義iframe的ID
var?iframeids=["test"]
//如果用戶的瀏覽器不支持iframe是否將iframe隱藏?yes?表示隱藏,no表示不隱藏
var?iframehide="yes"
function?dyniframesize()?
{
var?dyniframe=new?Array()
for?(i=0;?i<iframeids.length;?i++)
{
if?(document.getElementById)
{
//自動調(diào)整iframe高度
dyniframe[dyniframe.length]?=?document.getElementById(iframeids);
if?(dyniframe?&&?!window.opera)
{
dyniframe.style.display="block"
if?(dyniframe.contentDocument?&&?dyniframe.contentDocument.body.offsetHeight)?//如果用戶的瀏覽器是NetScape
dyniframe.height?=?dyniframe.contentDocument.body.offsetHeight;?
else?if?(dyniframe.Document?&&?dyniframe.Document.body.scrollHeight)?//如果用戶的瀏覽器是IE
dyniframe.height?=?dyniframe.Document.body.scrollHeight;
}
}
//根據(jù)設定的參數(shù)來處理不支持iframe的瀏覽器的顯示問題
if?((document.all?||?document.getElementById)?&&?iframehide=="no")
{
var?tempobj=document.all??document.all[iframeids]?:?document.getElementById(iframeids)
tempobj.style.display="block"
}
}
}
if?(window.addEventListener)
window.addEventListener("load",?dyniframesize,?false)
else?if?(window.attachEvent)
window.attachEvent("onload",?dyniframesize)
else
window.οnlοad=dyniframesize
</script>
轉(zhuǎn)載于:https://blog.51cto.com/xionghui/32301
總結(jié)
以上是生活随笔為你收集整理的关于IFRAME的一些小应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VS2005调试ASP.NET出现未能开
- 下一篇: SeqList