<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Coding Life &#187; javascript</title>
	<atom:link href="http://coding.blueshine.tw/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://coding.blueshine.tw</link>
	<description>用一生來coding 用全心發展IT</description>
	<lastBuildDate>Mon, 15 Mar 2010 09:16:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>秀出可置頂層的彈跳視窗</title>
		<link>http://coding.blueshine.tw/%e7%a8%8b%e8%a9%a6%e8%a8%ad%e8%a8%88/%e7%a7%80%e5%87%ba%e5%8f%af%e7%bd%ae%e9%a0%82%e5%b1%a4%e7%9a%84%e5%bd%88%e8%b7%b3%e8%a6%96%e7%aa%97/</link>
		<comments>http://coding.blueshine.tw/%e7%a8%8b%e8%a9%a6%e8%a8%ad%e8%a8%88/%e7%a7%80%e5%87%ba%e5%8f%af%e7%bd%ae%e9%a0%82%e5%b1%a4%e7%9a%84%e5%bd%88%e8%b7%b3%e8%a6%96%e7%aa%97/#comments</comments>
		<pubDate>Mon, 25 Feb 2008 16:51:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[程試設計]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://coding.blueshine.tw/?p=20</guid>
		<description><![CDATA[一般說來各位在設計網頁時，若有用到「表單」功能來做資料往返的功能時，常常會用到視窗內的彈跳功能來告知使用者目前資料處理的狀態。 而一般Client端處理的Script大都是用java script來實現表單處理的工作，但是當某個專案變的比較大型時，我們都會用彈跳視窗來簡化資料處理的步驟或是讓使用者更容易的注目於資料處理狀況。 在javascript中的彈跳視窗常用的函數叫做 window.open(); 這或許似乎有這項功能就可以偷些懶，只要將這個函數用opener.[object]閉該視窗後即可回傳。 但，它無法將彈跳視窗置於最上層，也就是說它尚無法always on top，你去按別的視窗它還是會被下壓，除非你要去乎叫window.focus();，它才會被叫出最上層，如果你用timer();去定時讓它於最頂層也不是個辦法。所以，在ＩＥ４出來之後，它新增了這兩個可以置頂的函數，分別是showModalDialog()與showModelessDialog() 。 該如何使用？很簡單，你只要下這個指令： window.showModalDialog("ABC.html", window); 或是 window.showModalessDialog("ABC.html", window); 這兩個有什麼差別？第一個是ie4可用，第二個是ie4跟ie5可用，再來差別是第一個函數是強迫焦點於新視窗上，你無法去處理父視窗上的其它工作，也就是說，你的滑鼠只在這新視窗上才能動作。而第二個函數是除了新視窗會一直置頂之外，你還可以在父視窗中處理其它工作，如捲動網頁、按下一頁。 第一個會比較來的有用處，因為此用意就是要先完成新視窗上的工作直到視窗關閉，才可執行下一個工作，這樣子，的資料處理「順序」才會流暢，不然，使用第二個函數將會讓使用者不小心離開網頁而視窗一同關閉。當然，看你開發的用意在哪裡，每個函數存在都有它的生存意義的。 但，在這個新視窗上按下submit時，它將會再開新視窗，這就就會覺的開新的視窗也太多了吧！所以您只要在新視窗的網頁中在＜ｂｏｄｙ＞下方加上這個標籤： ＜base target=&#8217;_self&#8217;;＞ 它即可在同一視窗中執行下一頁的工作。 其函數完整的說明如下： 使用方法： vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures]) vReturnValue = window.showModelessDialog(sURL [, vArguments] [,sFeatures]) 參數說明： sURL&#8211; 必選參數，類型：字符串。用來指定對話框要顯示的文檔的URL。 vArguments&#8211; 可選參數，類型：變體。用來向對話框傳遞參數。傳遞的參數類型不限，包括數組等。對話框通過window.dialogArguments來取得傳遞進來的參數。 sFeatures&#8211; 可選參數，類型：字符串。用來描述對話框的外觀等信息，可以使用以下的一個或幾個，用分號“;”隔開。 dialogHeight :對話框高度，不小于１００px，ＩＥ４中dialogHeight 和 dialogWidth 默認的單位是em，而ＩＥ５中是px，爲方便其見，在定義modal方式的對話框時，用px做單位。 dialogWidth: 對話框寬度。 dialogLeft: 離屏幕左的距離。 dialogTop: 離屏幕上的距離。 center: [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: small;">一般說來各位在設計網頁時，若有用到「表單」功能來做資料往返的功能時，常常會用到視窗內的彈跳功能來告知使用者目前資料處理的狀態。</span></p>
<p><span style="font-size: small;">而一般Client端處理的Script大都是用java script來實現表單處理的工作，但是當某個專案變的比較大型時，我們都會用<span style="color: #c00000;">彈跳視窗</span>來簡化資料處理的步驟或是讓使用者更容易的注目於資料處理狀況。<span id="more-20"></span></span></p>
<p><span style="font-size: small;">在javascript中的彈跳視窗常用的函數叫做</span></p>
<p><span style="font-size: small;"><span style="color: #0000bf;">window.open();</span></span></p>
<p><span style="font-size: small;">這或許似乎有這項功能就可以偷些懶，只要將這個函數用<strong>opener.[object]</strong>閉該視窗後即可回傳。</span></p>
<p><span style="font-size: small;">但，它無法將彈跳視窗置於最上層，也就是說它尚無法always on top，你去按別的視窗它還是會被下壓，除非你要去乎叫<strong>window.focus();</strong>，它才會被叫出最上層，如果你用<strong>timer();</strong>去定時讓它於最頂層也不是個辦法。所以，在ＩＥ４出來之後，它新增了這兩個可以置頂的函數，分別是<span style="font-family: Courier New; color: #0000cc;">showModalDialog()</span>與<span style="font-family: Courier New; color: #0000cc;">showModelessDialog()</span> 。</span></p>
<p><span style="font-size: small;">該如何使用？很簡單，你只要下這個指令：</span></p>
<p><span style="font-size: small;">window.showModalDialog(<span style="color: #cc6600;"><em>"ABC.html"</em></span>, window);</span></p>
<p><span style="font-size: small;">或是</span></p>
<p><span style="font-size: small;">window.showModalessDialog(<span style="color: #cc6600;"><em>"ABC.html"</em></span>, window);</span></p>
<p><span style="font-size: small;">這兩個有什麼差別？第一個是ie4可用，第二個是ie4跟ie5可用，再來差別是第一個函數是<span style="color: #ff0000;">強迫焦點於新視窗上</span>，你無法去處理父視窗上的其它工作，也就是說，你的滑鼠只在這新視窗上才能動作。而第二個函數是除了新視窗會一直置頂之外，你還可以在父視窗中處理其它工作，如捲動網頁、按下一頁。</span></p>
<p><span style="font-size: small;">第一個會比較來的有用處，因為此用意就是要先完成新視窗上的工作直到視窗關閉，才可執行下一個工作，這樣子，的資料處理「順序」才會流暢，不然，使用第二個函數將會讓使用者不小心離開網頁而視窗一同關閉。當然，看你開發的用意在哪裡，<span style="color: #0000bf;">每個函數存在都有它的生存意義的</span>。</span></p>
<p><span style="font-size: small;">但，在這個新視窗上按下submit時，它將會再開新視窗，這就就會覺的開新的視窗也太多了吧！所以您只要在新視窗的網頁中在＜ｂｏｄｙ＞下方加上這個標籤：</span></p>
<p><span style="font-size: small;"><span style="color: #00007f;">＜base target=&#8217;_self&#8217;;＞</span></span></p>
<p><span style="font-size: small;">它即可在同一視窗中執行下一頁的工作。</span></p>
<p><span style="font-size: small;">其函數完整的說明如下：</span></p>
<p><span style="font-size: small;">使用方法：<br />
vReturnValue = window.showModalDialog(<span style="color: #ff0000;">sURL</span> [, <span style="color: #8000ff;">vArguments</span>] [,<span style="color: #0000ff;">sFeatures</span>])<br />
vReturnValue = window.showModelessDialog(<span style="color: #c00000;">sURL</span> [, <span style="color: #8000ff;">vArguments</span>] [,<span style="color: #0000ff;">sFeatures</span>])</span></p>
<p><span style="font-size: small;">參數說明：<br />
<span style="color: #ff0000;">sURL</span>&#8211;<br />
必選參數，類型：字符串。用來指定對話框要顯示的文檔的URL。<br />
<span style="color: #8000ff;">vArguments</span>&#8211;<br />
可選參數，類型：變體。用來向對話框傳遞參數。傳遞的參數類型不限，包括數組等。對話框通過window.dialogArguments來取得傳遞進來的參數。<br />
<span style="color: #0000ff;">sFeatures</span>&#8211;<br />
可選參數，類型：字符串。用來描述對話框的外觀等信息，可以使用以下的一個或幾個，用分號“;”隔開。</span></p>
<ol><span style="font-size: small;"></p>
<li><span style="color: #0000bf;">dialogHeight</span> :對話框高度，不小于１００px，ＩＥ４中dialogHeight 和 dialogWidth 默認的單位是em，而ＩＥ５中是px，爲方便其見，在定義modal方式的對話框時，用px做單位。</li>
<li><span style="color: #0000ff;">dialogWidth</span>: 對話框寬度。</li>
<li><span style="color: #0000ff;">dialogLeft</span>: 離屏幕左的距離。</li>
<li><span style="color: #0000ff;">dialogTop</span>: 離屏幕上的距離。</li>
<li><span style="color: #0000ff;">center</span>: {yes | no | 1 | 0 }：窗口是否居中，默認yes，但仍可以指定高度和寬度。</li>
<li><span style="color: #0000ff;">help</span>: {yes | no | 1 | 0 }：是否顯示幫助按鈕，默認yes。</li>
<li><span style="color: #0000ff;">resizable</span>: {yes | no | 1 | 0 } ［ＩＥ５＋］：是否可被改變大小。默認no。</li>
<li><span style="color: #0000ff;">status</span>: {yes | no | 1 | 0 } ［IE5+］：是否顯示狀態欄。默認爲yes[ Modeless]或no[Modal]。</li>
<li><span style="color: #0000ff;">scroll</span>:{ yes | no | 1 | 0 | on | off }：指明對話框是否顯示滾動條。默認爲yes。<br />
面幾個屬性是用在HTA中的，在一般的網頁中一般不使用。</li>
<li><span style="color: #0000ff;">dialogHide</span>:{ yes | no | 1 | 0 | on | off }：在打印或者打印預覽時對話框是否隱藏。默認爲no。</li>
<li><span style="color: #0000ff;">edge</span>:{ sunken | raised }：指明對話框的邊框樣式。默認爲raised。</li>
<li><span style="color: #0000ff;">unadorned</span>:{ yes | no | 1 | 0 | on | off }：默認爲no。</li>
<p></span></ol>
<p><span style="font-size: small;"> </span></p>
<p><span style="font-size: small;">接下來，如果想要將新視窗的表單值也能返回母視窗，程式碼範例如下：</span></p>
<p><span style="font-size: small;">父視窗網頁：</span></p>
<p><span style="font-size: small;"><span>＜form id="Form1&#8243;＞<br />
回傳值：＜input type="text" id="<strong><span style="color: #0000bf;">getval</span></strong>" readOnly＞<br />
＜/form＞</span></span></p>
<p>＜input type="button" value="開啟" onClick="openmywindow()"＞</p>
<p>＜script language="JavaScript"＞<br />
function openmywindow()<br />
{<br />
var src = "xx.htm";    //指定子視窗的位置與檔名<br />
var winFeatures = "dialogHeight:300px; dialogLeft:200px;";</p>
<p><span style="color: #ff0000;">var obj = Form1;</span> //將物件傳遞到新視窗中</p>
<p>window.showModalDialog(src, obj, winFeatures);<br />
}<br />
＜/script＞</p>
<p><span style="font-size: small;">新視窗網頁xx.htm：</span></p>
<p><span style="font-size: small;"><span>＜form id="Form2&#8243;＞<br />
請輸入資料：＜input type="text" id="<strong><span style="color: #00007f;">wData</span></strong>"＞<br />
＜input type="button" value="送出" onClick="shoot(sendForm.wData.value);"＞<br />
＜/form＞</span></span></p>
<p>＜script language="JavaScript"＞<br />
function shoot(val)<br />
{<br />
//取得前一頁所傳過來的物件<br />
<span style="color: #ff0000;">var getObj = window.dialogArguments;</span></p>
<p>//賦值<br />
getObj.<strong><span style="color: #0000bf;">getval</span></strong>.value = val;</p>
<p>//若不想將視窗關閉，則註解掉下面這行即可。<br />
window.close();<br />
}<br />
＜/script＞</p>
<p><span style="font-size: small;">父視窗中的紅字部分是將表單中的物件予以傳遞至showModalDialog的<span style="color: #8000ff;">vArguments</span>，此時的彈跳視窗頁就可以用<span style="color: #ff0000;">window.dialogArguments</span>的函數將名為<strong><span style="color: #00007f;">wData</span></strong>的中的資料遞回至父視窗的<strong><span style="color: #0000bf;">getval</span></strong>裡了。</span></p>
<p><span style="font-size: small;">如果你想關閉彈跳視窗之後父視窗也能跟著改變網頁的狀態，如自動前往下一頁或是自行重新整理。那麼你只要在window.showModalDialog的下一行下達<span style="color: #4040ff;">window.reload()</span>，則父視窗即在視窗關閉之後執行重整的動作。</span></p>
<p><span style="font-size: small;">這樣有什麼好處？</span></p>
<p><span style="font-size: small;">至少你的網頁不會像是這個樣子：</span></p>
<p><span style="font-size: small;"><a href="http://picasaweb.google.com/tottoko/aVNIaG/photo#5170818980376927026"><img src="http://lh4.google.com/tottoko/R8Jwd2s22zI/AAAAAAAAD98/Q-aEJjuJMHI/s800/al1.png.jpg" alt="" /></a></span></p>
<p><span style="font-size: small;">你可以做成像這樣子漂亮又醒目的警告視窗：</span></p>
<p><span style="font-size: small;"><a href="http://picasaweb.google.com/tottoko/aVNIaG/photo#5170830207421438786"><img src="http://lh6.google.com/tottoko/R8J6rWs220I/AAAAAAAAD-k/f4b55yzvbQg/s800/al2.png.jpg" alt="" /></a></span></p>
<p><span style="font-size: small;"> </span></p>
<p><span style="font-size: small;">是不是也可以這麼好看又好用呢</span></p>
<p><span style="font-size: small;">當然說到這裡要注意一點的是只適用於M$的IE，Firefox無法使用，F家的朋友，感謝您看到這裡，被騙進來了真是很抱歉，可能看到這裡心中已經有F那將會更有F(fu?k)，下篇將會有替代於Firefox的方案，請各位稍後唷</span></p>
]]></content:encoded>
			<wfw:commentRss>http://coding.blueshine.tw/%e7%a8%8b%e8%a9%a6%e8%a8%ad%e8%a8%88/%e7%a7%80%e5%87%ba%e5%8f%af%e7%bd%ae%e9%a0%82%e5%b1%a4%e7%9a%84%e5%bd%88%e8%b7%b3%e8%a6%96%e7%aa%97/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
