找回密码
 入住遨海湾
搜索
网站解决方案专享优惠-3折上云
查看: 1455|回复: 1

window.showModalDialog以及window.open用法简介

[复制链接]
发表于 2004-9-21 10:44:00 | 显示全部楼层 |阅读模式

登录后查才能浏览下载更多咨询,有问题联系QQ:3283999

您需要 登录 才可以下载或查看,没有账号?入住遨海湾

×
一、window.open()支持环境: JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+0 C) o ~: x( Y/ t : j3 a4 h8 C* \6 G' p( ~- k 4 m) j) {9 ?1 e5 z二、基本语法: ! n" D8 \4 Q4 N0 x' C( }window.open(pageURL,name,parameters) - {+ n7 ?/ m3 r其中:1 z4 @" L. B5 T6 U pageURL 为子窗口路径 - h6 y) R5 g3 l d1 B, sname 为子窗口句柄 5 K3 L; ~6 o# g4 S& ~$ M3 Oparameters 为窗口参数(各参数用逗号分隔) k# o. k5 D' y) k0 Z . f) d; t y5 R9 [. U- k% W x% N1 k/ B( A+ k2 j 三、示例:6 z [% M4 z3 D* n1 ^3 O5 U0 N7 I2 R <SCRIPT> : q0 o# s. h& H/ k# W, N s- |<!-- 4 z9 _7 @) W7 p3 n* G" `- [' ` window.open ('page.html','newwindow','height=100,width=400,top=0,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no') 5 b6 a$ @% c: T, j/ c$ Z //写成一行 - O J, }: ]+ n# F) a8 U6 {--> 4 C% ]$ ~, \7 E</SCRIPT>3 V" O* Q0 Z8 j- u" p; R 脚本运行后,page.html将在新窗体newwindow中打开,宽为100,高为400,距屏顶0象素,屏左0象素,无工具条,无菜单条,无滚动条,不可调整大小,无地址栏,无状态栏。3 m s5 v) @" ?1 L7 n( [ l% W 请对照。8 J' ~2 g, P& I 2 Y& r+ ]2 Y( C- {( ^/ ~& ^ 上例中涉及的为常用的几个参数,除此以外还有很多其他参数,请见四。% a! ~2 J8 G/ [! f( [# l 5 |6 N2 w8 J% N1 x# u& `3 g$ e % z- }! e9 d- g2 [ B* k 四、各项参数, ^9 l; x& F2 P; N. | 其中yes/no也可使用1/0;pixel value为具体的数值,单位象素。! Z: d( S$ M& q. C* j + z0 @7 M# B7 @3 S: G5 b 参数 | 取值范围 | 说明 # f8 D' H/ m9 O6 o| | $ L0 T1 f% a3 i8 a( y9 @" u9 O alwaysLowered | yes/no | 指定窗口隐藏在所有窗口之后 & d# s' c. s1 b alwaysRaised | yes/no | 指定窗口悬浮在所有窗口之上 , U5 b4 }" w x6 A$ F; Z! Ldepended | yes/no | 是否和父窗口同时关闭 ' z7 G7 }# v7 s% U- |+ udirectories | yes/no | Nav2和3的目录栏是否可见 8 o. G: ?, q, S% w& n6 S: v9 B) A c! Theight | pixel value | 窗口高度 / ]. z# M, o9 k3 b1 H! f% i1 _/ p; R hotkeys | yes/no | 在没菜单栏的窗口中设安全退出热键 - F! g0 {0 I( j4 _. y" j8 r innerHeight | pixel value | 窗口中文档的像素高度 ' K$ x5 \' a8 i! Z$ NinnerWidth | pixel value | 窗口中文档的像素宽度 + J1 Q4 ~+ p: t. m; M( ?$ B0 q6 @: ilocation | yes/no | 位置栏是否可见 - {- k- D2 |/ R/ H7 m' C' Kmenubar | yes/no | 菜单栏是否可见 * T; ]/ d; z7 P0 ^2 ~4 _ outerHeight | pixel value | 设定窗口(包括装饰边框)的像素高度 . b* r4 A$ [3 H outerWidth | pixel value | 设定窗口(包括装饰边框)的像素宽度 " d: b/ Y% I# a* f* n0 r, g* K resizable | yes/no | 窗口大小是否可调整 4 v6 Q/ q5 y' K. T screenX | pixel value | 窗口距屏幕左边界的像素长度 : q, ^1 {, {" ]4 u- N" M( D" HscreenY | pixel value | 窗口距屏幕上边界的像素长度 ; F/ z, K- w# _4 L" @scrollbars | yes/no | 窗口是否可有滚动栏 9 v9 ^- W# C+ T3 Y- ]2 ^: p2 Vtitlebar | yes/no | 窗口题目栏是否可见 9 @9 I5 J0 }- itoolbar | yes/no | 窗口工具栏是否可见 . T! ]" K4 K) d* r, EWidth | pixel value | 窗口的像素宽度 9 T' {2 {6 f: l! P0 h9 U3 n z-look | yes/no | 窗口被激活后是否浮在其它窗口之上5 z, y9 B' b* V4 Y8 z window.showModalDialog使用手册" g4 b$ j0 m$ b, E4 S 基本介绍:$ O& o, w: k8 M: I6 y showModalDialog() (IE 4+ 支持) 0 v0 \: U/ E) g! D5 U2 ^ [9 zshowModelessDialog() (IE 5+ 支持) e- \$ z' [1 Y# V8 p5 |$ B# a9 h& iwindow.showModalDialog()方法用来创建一个显示HTML内容的模态对话框。 ' d' V, J* A0 vwindow.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。/ N9 }+ g+ ~5 `' j* K 8 X4 d( e9 r% V8 } 使用方法: ' u* T" v5 n" E# a! I4 |vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures])8 n) \" A& u* C( @ vReturnValue = window.showModelessDialog(sURL [, vArguments] [,sFeatures]) 5 |% |" F) B8 n4 l" Y! }! k( M0 b, L8 h4 e: Z. v3 p4 _ 参数说明:! |6 u2 f! h1 c) K( I- l sURL--0 W( l( F+ X4 |) D; D5 }6 Z4 j 必选参数,类型:字符串。用来指定对话框要显示的文档的URL。- h5 d% t6 O0 U- C) k" h0 C vArguments--7 }+ G* N/ {8 c 可选参数,类型:变体。用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。& c* S5 [( F0 W. M0 s sFeatures--! X: U( y2 T; G 可选参数,类型:字符串。用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。5 T h) R6 [' I! e- S+ N+ f 1.dialogHeight :对话框高度,不小于100px,IE4中dialogHeight 和 dialogWidth 默认的单位是em,而IE5中是px,为方便其见,在定义modal方式的对话框时,用px做单位。 R: n) Q$ n/ f/ O3 L 2.dialogWidth: 对话框宽度。 # p! u4 `1 ^5 J# N E! N3.dialogLeft: 离屏幕左的距离。 5 n- x3 C. W& E% x7 P4.dialogTop: 离屏幕上的距离。 % v9 X% i5 }2 F6 x! L5.center: {yes | no | 1 | 0 }:窗口是否居中,默认yes,但仍可以指定高度和宽度。 4 Z T. N+ r2 y& x. x7 A6.help: {yes | no | 1 | 0 }:是否显示帮助按钮,默认yes。 2 C2 \- i1 l `* k5 ?8 Y7.resizable: {yes | no | 1 | 0 } [IE5+]:是否可被改变大小。默认no。 1 \9 m5 p+ d6 w; s6 Y# V7 z8.status: {yes | no | 1 | 0 } [IE5+]:是否显示状态栏。默认为yes[ Modeless]或no[Modal]。 , {% N% b' T! b4 f5 q& Q9.scroll:{ yes | no | 1 | 0 | on | off }:指明对话框是否显示滚动条。默认为yes。 4 o- X( }& u. o6 K% O8 ?* [1 a9 E下面几个属性是用在HTA中的,在一般的网页中一般不使用。5 e, k/ q5 h4 W+ | 10.dialogHide:{ yes | no | 1 | 0 | on | off }:在打印或者打印预览时对话框是否隐藏。默认为no。 " l$ f" G" W; R% I$ N11.edge:{ sunken | raised }:指明对话框的边框样式。默认为raised。 3 w# H n( n2 x' `# y: t12.unadorned:{ yes | no | 1 | 0 | on | off }:默认为no。$ r- Z& s4 f+ p/ |0 j* U, G ; E, ~7 \2 `+ G* `1 k, W% o" O参数传递: ) m% ?6 r, A& r4 X, ^- X1.要想对话框传递参数,是通过vArguments来进行传递的。类型不限制,对于字符串类型,最大为4096个字符。也可以传递对象,例如: & `' s5 f0 |8 ^2 O------------------------------- F X6 _7 H/ [; }; zparent.htm ; D* \7 B0 _5 }9 e% h' n<script>: z' \% ?+ [$ A5 l' l. W4 T- k var obj = new Object(); " {2 p6 G" h$ @, K. @/ Wobj.name="51js"; ' l) w& m" @2 c$ @+ @( n9 G9 Ywindow.showModalDialog("modal.htm",obj,"dialogWidth=200px;dialogHeight=100px"); " p# F, _- U |- V7 U</script>6 @. S" C z. B. e modal.htm# m( Q9 k# N9 V9 u1 T' u" @5 q <script> 2 r# M5 D. _2 f2 ~7 x9 x) Bvar obj = window.dialogArguments: {8 K! b# D, Y! z1 s alert("您传递的参数为:" + obj.name) : _" ^/ \, b* m</script>) p3 L% ?8 Z6 j0 ^9 v& T -------------------------------8 C) }; Z v1 P 2.可以通过window.returnValue向打开对话框的窗口返回信息,当然也可以是对象。例如: , @, G$ d* E% s7 b+ @. |------------------------------ 5 s! ^4 l# j. U/ Zparent.htm9 r, V; {% x1 | <script> ( P3 d2 X! r& g, d( u' {8 _, ~str =window.showModalDialog("modal.htm",,"dialogWidth=200px;dialogHeight=100px"); + e% c1 P. x8 j9 t$ R, g: s. V0 calert(str); 4 m3 D; \) L' J5 w8 R+ \+ H n: a</script>* \1 A+ Y% l. Y5 \. V# F# Q modal.htm 0 F' M$ [+ i6 Q<script> & p$ S# Q X: I" _9 ~: k( z! m7 zwindow.returnValue="http://www.51js.com";+ w/ L! W% F3 ~7 Z! e" ~7 {0 Q" ^ </script> 4 M7 O6 N3 R- { `( Y4 }$ e- Q9 R8 G [em09]
遨海湾-心灵的港湾 www.aosea.com
 楼主| 发表于 2004-9-21 10:46:00 | 显示全部楼层
Javascript有许多内建的方法来产生对话框,如:window.alert(), window.confirm(),window.prompt().等。 然而IE提供更多的方法支持对话框。如:

showModalDialog() (IE 4+ 支持)" C2 z1 F* X% k w4 R   showModelessDialog() (IE 5+ 支持)

window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框,由于是对话框,因此它并没有一般用window.open()打开的窗口的所有属性。

window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。

当我们用showModelessDialog()打开窗口时,不必用window.close()去关闭它,当以非模态方式[IE5]打开时, 打开对话框的窗口仍可以进行其他的操作,即对话框不总是最上面的焦点,当打开它的窗口URL改变时,它自动关闭。而模态[IE4]方式的对话框始终有焦点(焦点不可移走,直到它关闭)。模态对话框和打开它的窗口相联系,因此我们打开另外的窗口时,他们的链接关系依然保存,并且隐藏在活动窗口的下面。

使用方法如下:8 `7 `6 Z& Y" {7 @; q' Y/ H vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures]) / C- e D. o! W vReturnValue = window.showModelessDialog(sURL [, vArguments] [, sFeatures])

参数说明: 1 |& R* F5 Q1 P3 @9 e0 V6 a sURL& A. E* h( h1 k' O9 f" T5 j 必选参数,类型:字符串。用来指定对话框要显示的文档的URL。1 d9 \0 c d4 u! Y7 V vArguments j3 s1 z1 b$ r! Z 可选参数,类型:变体。用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。 / A; C1 ^+ z# Y4 @% f$ R sFeatures: _; [! L* o( X6 A6 h9 T 可选参数,类型:字符串。用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。 8 ^$ J3 e& y' q: z8 | dialogHeight 对话框高度,不小于100px,IE4中dialogHeight 和 dialogWidth 默认的单位是em,而IE5中是px,为方便其见,在定义modal方式的对话框时,用px做单位。 : ]. ?' h0 b& R) _! p; [   dialogWidth: 对话框宽度。! t1 \+ l7 f v+ P   dialogLeft: 距离桌面左的距离。7 e$ U( u; c4 C% E/ U( A   dialogTop: 离桌面上的距离。 4 u% d q& H8 j; a5 s* v   center: {yes | no | 1 | 0 }:窗口是否居中,默认yes,但仍可以指定高度和宽度。 9 ^7 D- t) F5 L' g$ [4 H! w1 {   help: {yes | no | 1 | 0 }:是否显示帮助按钮,默认yes。 ) c' A8 z5 s4 W& {, O   resizable: {yes | no | 1 | 0 } [IE5+]:是否可被改变大小。默认no。& N" e/ p! m1 R   status: {yes | no | 1 | 0 } [IE5+]:是否显示状态栏。默认为yes[ Modeless]或no[Modal]。; q4 ?$ _+ z9 R5 Z. a scroll:{ yes | no | 1 | 0 | on | off }:指明对话框是否显示滚动条。默认为yes。

还有几个属性是用在HTA中的,在一般的网页中一般不使用。, U+ k6 e2 }, ^& f dialogHide:{ yes | no | 1 | 0 | on | off }:在打印或者打印预览时对话框是否隐藏。默认为no。+ C; H! j7 ~2 S' Q edge:{ sunken | raised }:指明对话框的边框样式。默认为raised。( A0 b7 M; D5 ?# r* @/ ?0 ^1 { unadorned:{ yes | no | 1 | 0 | on | off }:默认为no。

传入参数: & i+ g/ f1 `, {7 a; d" e3 h" } 要想对话框传递参数,是通过vArguments来进行传递的。类型不限制,对于字符串类型,最大为4096个字符。也可以传递对象,例如:

test1.htm; e' F# m( @$ u# i6 c( R# D- y2 h <script> ' I" ?' R, w) [1 B7 k0 ^ var mxh1 = new Array("mxh","net_lover","孟子E章"); _1 c% Q+ u C8 e/ a var mxh2 = window.open("about:blank","window_mxh")1 j' D6 o0 K# @5 c. A // 向对话框传递数组& _/ b+ I2 u8 C; O window.showModalDialog("test2.htm",mxh1)/ h( ~4 C3 E& I0 W3 X1 m, I // 向对话框传递window对象+ \- W! g% S. K window.showModalDialog("test3.htm",mxh2)8 Z T& z3 u1 ^ </script>test2.htm * v" J, V, \6 M" P<script>& K; y5 p( U7 O+ l0 A5 F var a = window.dialogArguments & G( f5 V0 ^3 O) o7 D8 ~ alert("您传递的参数为:" + a) : f! R* k3 S# u. f Q</script> ! g$ w: a& }: b: d test3.htm ) j, Y3 N8 _# Q- E4 L<script> " g5 n+ b5 G/ t: D: I% q var a = window.dialogArguments) S5 o( T1 M: i7 i/ ~4 H: x alert("您传递的参数为window对象,名称:" + a.name) . I$ P3 f( W' M3 z: S </script>

可以通过window.returnValue向打开对话框的窗口返回信息,当然也可以是对象。例如:

test4.htm1 W3 ?+ r* q" m& @& ]' S; d- X <script> b( a2 D( F$ p8 @+ B% C var a = window.showModalDialog("test5.htm") ' @+ X! t2 n0 o- L9 ^! i for(i=0;i<a.length;i++) alert(a)( J8 R- A8 W2 X, ~! r+ W: S6 p: Z </script>test5.htm4 e' W8 x$ `2 K$ _- Y9 a <script>+ A+ _8 @* S( n8 v" @1 Y8 K9 Q function sendTo() ) U! Z7 X, B- U { 8 K) z a8 C- \; O* c b( l var a=new Array("a","b")% w0 @( x+ f$ r9 h window.returnValue = a 0 {/ G9 d' I5 _+ ~ window.close() 9 s0 F" O( l4 \7 Q }# f( X9 d* V7 I* H. ^) Q! a </script>* k5 ^0 T7 w. J: ?/ G( M <body> & [1 t* ?% H* C6 s* j7 |& `8 k <form> f/ J W# K2 C$ r <input value="返回" type=button onclick="sendTo()">3 U! _! Y; l% d9 M5 l! A+ [$ J </form>

常见问题:9 Q5 E2 X) e2 k* e& M% M2 V 1,如何在模态对话框中进行提交而不新开窗口? 1 p6 q) H- j, X0 }3 w3 i: {& ^- d- w 如果你 的 浏览器是IE5.5+,可以在对话框中使用带name属性的iframe,提交时可以制定target为该iframe的name。对于IE4+,你可以用高度为0的frame来作。例如:

, p' S3 }0 c6 C, q/ }, F; x: }

遨海湾-心灵的港湾 www.aosea.com
您需要登录后才可以回帖 登录 | 入住遨海湾

本版积分规则

网站解决方案专享优惠-3折上云

QQ|手机版|小黑屋|遨海湾超级社区

GMT+8, 2025-4-24 21:56

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表