模態 非模態

2021-04-01 06:32:52 字數 2452 閱讀 1464

正常視窗似乎是window.open或hreftarget彈出的普通視窗,而模式視窗是類似alert那種必須關閉才能響應其他事件的視窗,或者是可以繼承父視窗的生存(父視窗關閉相應的模式視窗也關閉),

以下就是2個,乙個必須響應,乙個不許要

showmodaldialog() (ie 4+ 支援)

showmodelessdialog() (ie 5+ 支援)

window.showmodaldialog()方法用來建立乙個顯示html內容的模態對話方塊,由於是對話方塊,因此它並沒有一般用window.open()開啟的視窗的所有屬性。

window.showmodelessdialog()方法用來建立乙個顯示html內容的非模態對話方塊。

當我們用showmodelessdialog()開啟視窗時,不必用window.close()去關閉它,當以非模態方式[ie5]開啟時, 開啟對話方塊的視窗仍可以進行其他的操作,即對話方塊不總是最上面的焦點,當開啟它的視窗url改變時,它自動關閉。而模態[ie4]方式的對話方塊始終有焦點(焦點不可移走,直到它關閉)。模態對話方塊和開啟它的視窗相聯絡,因此我們開啟另外的視窗時,他們的鏈結關係依然儲存,並且隱藏在活動視窗的下面。

使用方法如下:

vreturnvalue = window.showmodaldialog(surl [, varguments] [, sfeatures])

vreturnvalue = window.showmodelessdialog(surl [, varguments] [, sfeatures])

引數說明:

surl

必選引數,型別:字串。用來指定對話方塊要顯示的文件的url。

varguments

可選引數,型別:變體。用來向對話方塊傳遞引數。傳遞的引數型別不限,包括陣列等。對話方塊通過window.dialogarguments來取得傳遞進來的引數。

sfeatures

可選引數,型別:字串。用來描述對話方塊的外觀等資訊,可以使用以下的乙個或幾個,用分號「;」隔開。

dialogheight 對話方塊高度,不小於100px,ie4中dialogheight 和 dialogwidth 預設的單位是em,而ie5中是px,為方便其見,在定義modal方式的對話方塊時,用px做單位。

dialogwidth: 對話方塊寬度。

dialogleft: 距離桌面左的距離。

dialogtop: 離桌面上的距離。

center: :視窗是否居中,預設yes,但仍可以指定高度和寬度。

help: :是否顯示幫助按鈕,預設yes。

resizable: [ie5+]:是否可被改變大小。預設no。

status: [ie5+]:是否顯示狀態列。預設為yes[ modeless]或no[modal]。

scroll::指明對話方塊是否顯示滾動條。預設為yes。

還有幾個屬性是用在hta中的,在一般的網頁中一般不使用。

dialoghide::在列印或者列印預覽時對話方塊是否隱藏。預設為no。

edge::指明對話方塊的邊框樣式。預設為raised。

unadorned::預設為no。

傳入引數:

要想對話方塊傳遞引數,是通過varguments來進行傳遞的。型別不限制,對於字串型別,最大為4096個字元。也可以傳遞物件,例如:

test1.htm

********************

test2.htm

********************

test3.htm

********************

可以通過window.returnvalue向開啟對話方塊的視窗返回資訊,當然也可以是物件。例如:

test4.htm

***************====

test5.htm

***************====

常見問題:

1,如何在模態對話方塊中進行提交而不新開視窗?

如果你 的 瀏覽器是ie5.5+,可以在對話方塊中使用帶name屬性的iframe,提交時可以制定target為該iframe的name。對於ie4+,你可以用高度

你可用彈出模態視窗來達到目的:

先對按鈕新增事件

this.textbox1.attributes.add("onclick","return(window.showmodaldialog('***.aspx','newwin','');");

其次,在***.aspx頁面中,根據選擇的下拉框結果,返回true/false,如此,當返回true時,頁面自然就提交了,如果返回false,則頁面不提交.

page.registerstartupscript("","");

摟主,你要新增乙個textbox1和乙個button1,設定他們的寬度為0px,你返回的值就是textbox1.text裡面的內容

你可以在button1裡面執行你返回值之後的程式!

我是在做乙個類似購物車的程式裡面用道的,很好用的.

「模態」與「非模態」

模態與非模態,主要就是體現在是否 阻塞 應用程式上。模態 在該視窗彈出後,會阻塞應用程式的視窗,使其不可操作 非模態 不會阻塞應用程式的視窗,兩者可獨立操作。模,就是模子,模子是不可更改的,因此模態情況下,除了它本身之外的內容不可操作。兩個的使用根據實際情況而定,轉換的方式是通過 setmodal ...

Qt QMessageBox 之模態非模態

qt 的訊息框用起來比新建對話方塊方便一些。有兩種呼叫方法,靜態的和動態的。一 靜態呼叫 例子 qmessagebox warning qwidget parent,const qstring title,const qstring text,standardbuttons buttons ok,s...

QDialog之模態與非模態

qtdialog在建立時預設為非模態 modal屬性為false 可以通過setmodal 函式設定對話方塊為模態還是非模態。視窗是否是模態和非模態和視窗 包括qdialog和qwidget等 的exec 和show 等函式無直接關係,只和視窗的阻塞方式有關。setwindowmodality 函式...