旗下网站:橡胶人才网

 找回密码
 注册
查看: 3367|回复: 0

[分享]制作Javascript弹出窗口技巧九则

[复制链接]
发表于 2006-7-14 05:48:22 | 显示全部楼层 |阅读模式

马上注册,结交更多胶友,享用更多功能!

您需要 登录 才可以下载或查看,没有账号?注册

×
  经常上网的朋友可能会到过这样一些网站,一进入首页立刻会弹出一个窗口,或者按一个连接或按钮弹出,通常在这个窗口里会显示一些注意事项、版权信息、警告、欢迎光顾之类的话或者作者想要特别提示的信息。其实制作这样的页面效果非常的容易,只要往该页面的HTML里加入几段Javascript代码即可实现。下面俺就带您剖析它的奥秘。
9 [( Q9 I' [3 n( `9 Z( r$ C& Z: X( _7 \$ b" o. d/ G
  1、最基本的弹出窗口代码
8 G1 ]- E  R' @9 X3 V
2 w6 S  y; B' N& q- I( X  \" I  其实代码非常简单: % B5 Y3 q% Z0 L" D
7 D( q" T! B  N
  < SCRIPT LANGUAGE="javascript">
$ G& R4 @( C* m- ]1 n3 c
, r& Y% C! C- F" [' X5 I6 h2 U7 D( i8 t  < !--( X* F% O, Z4 U" o, A
# H1 n0 C( H9 K; ?1 W! l
  window.open ("page.html")' U1 \6 L' C2 F' }5 @; l+ W% ]3 Q6 `) k

9 \* Q0 Y2 j% B1 m9 {" Q2 C  -- ( |/ A( I' ?" y; z7 w6 A0 |- S
>& s1 u- Y4 ?& Z( E. {
& k, C/ r2 K3 h
  < /SCRIPT> 7 ?" L' K0 r# m# S! v

4 Z* C" ]5 e8 j7 }/ l, K$ |5 H# G  因为这是一段Javascript代码,所以它们应该放在< SCRIPT LANGUAGE="javascript">之间。 < !-- 和 -->是对一些版本低的浏览器起作用,在这些老浏览器中不会将标签中的代码作为文本显示出来。要养成这个好习惯啊。 # C" u+ x1 U# W8 c) P8 L

1 K1 C3 p0 z( R! P  window.open ("page.html") 用于控制弹出新的窗口page.html,如果page.html不与主窗口在同一路径下,前面应写明路径,绝对路径(http://)和相对路径(../)均可。 * E9 q9 d% c6 N& _8 O

9 V7 s. D7 f4 X) Z( [, e4 }  用单引号和双引号都可以,只是不要混用。 4 Z$ ?, Q  e, N- k( J8 R
/ L8 a6 Z- f3 d9 \" `
  这一段代码可以加入HTML的任意位置,< head>和< /head>之间可以,< body>间< /body>也可以,越前越早执行,尤其是页面代码长,又想使页面早点弹出就尽量往前放。 也可以,越前越早执行,尤其是页面代码长,又想使页面早点弹出就尽量往前放。
4 _# `$ C; Z2 H6 {+ U
1 F- x3 a9 m1 B, b- e  2、经过设置后的弹出窗口
* {* M  I( S. _
5 s( l( x. b6 g+ q, P  下面再说一说弹出窗口的设置。只要再往上面的代码中加一点东西就可以了。我们来定制这个弹出的窗口的外观,尺寸大小,弹出的位置以适应该页面的具体情况。
% p5 G7 h/ R4 [- I- h  m4 w0 R
0 T9 M, W; |4 R/ B* D  < SCRIPT LANGUAGE="javascript">/ d8 f$ S5 ?) ?8 k+ C; C/ z

! T+ F. s1 Z3 N' S* r  < !--
# D/ N8 J5 Q- I6 k8 Z; X
! H+ K  K2 H  q: Q( X& }: U, a* M1 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")
! }( Z& u% I& ^, a7 b! C
$ U) y6 v0 D# @  u/ E  //写成一行
' R% m- k: J) e% e) G9 n8 v: Y! w8 e0 X; F# n
  -->
# K, e1 u5 C  P2 q+ q5 [6 f5 @/ X) j+ \6 o3 q
  < /SCRIPT> + m6 \" n# k, y. ]5 D+ E$ @4 C' R
: p" S' E. B5 m' b, X, U
  参数解释:
0 N2 z! W) ^3 D. M' R
* e: i& Q3 z2 _4 U3 @  < SCRIPT LANGUAGE="javascript"> js脚本开始;* g- z8 R  x' x

: N: X$ o9 t: P, H. [$ p3 z( q  window.open 弹出新窗口的命令;3 P" [) j5 \$ S& c4 O; [" V8 a

$ m4 s* H- i; Z. c5 {0 }% V+ F  "page.html" 弹出窗口的文件名;
8 q- `  T9 p5 H2 y/ {
$ P: N+ K% S. j4 d* Z  "newwindow" 弹出窗口的名字(不是文件名),非必须,可用空"代替;( z  j" I" k1 j& O" v+ j+ I/ a, |

. [" U" o% q$ p" j( s0 D- S5 a  height=100 窗口高度;
- s- X+ y  p  K3 r  b, K; {" c2 c2 U1 c: d& h1 j: A; y7 k$ X
  width=400 窗口宽度;5 o$ z& E: u6 N$ ?$ |7 e

* O2 _& J& S$ n5 M! L  top=0 窗口距离屏幕上方的象素值;
9 Y( ?: E' ]  N2 \
% @2 ^  R+ _( Z# b5 V; F7 U  left=0 窗口距离屏幕左侧的象素值;$ e+ u' J5 }5 n' q8 t

( W. h' U  N" M8 y+ f  toolbar=no 是否显示工具栏,yes为显示;' K3 T6 q- R& ~# K# |) f
6 `! ^% d4 t' q1 G9 F* X
  menubar,scrollbars 表示菜单栏和滚动栏。( ^. w  J, S/ M. P& w" {

) Z, }- o% I3 Q: w) T  resizable=no 是否允许改变窗口大小,yes为允许;+ e# v: {& m) }* J! [
1 A4 F+ A6 F9 |
  location=no 是否显示地址栏,yes为允许;! T: {. ?, V3 ]1 l/ [, d( X

& l( O1 [% a* R# z+ o6 F7 [" o3 z  status=no 是否显示状态栏内的信息(通常是文件已经打开),yes为允许;
. I& x% W- S  p6 s% T+ v3 R+ e% z6 I1 o$ `
  < /SCRIPT> js脚本结束 & N, ]# t+ y2 y
9 N: y0 C+ a9 u1 Z% L
  3、用函数控制弹出窗口
5 z) [) x8 ~$ s- l2 r
/ X. V' W% P$ v" B. k4 _: \) o  下面是一个完整的代码: . A( \4 P0 |$ Y. \" I$ V
5 I5 Q( |: G8 r% w" k" A: q
  < html>- F- ]( j# ^4 p6 A- L; A( x: [9 j
% H7 y/ a; I2 w# ]
  < head>, ?. ~, ^- Z) X2 v8 |$ @7 Y
; L! n5 ?/ S; ~& T: O4 r
  < script LANGUAGE="JavaScript">* I/ {, \' j! L8 F( B

6 d/ Z% C# P- k% E8 d+ n  < !--" |" N% s7 d6 j8 M
0 B/ p: Q* p) E4 p- H. {( y' m: |
  function openwin() {
1 N) q. G- ^1 `3 [& U
* B& S5 x: i. m" e5 z) C  window.open ("page.html", "newwindow", "height=100, width=400, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no")& t  U" \  b2 w

+ t' g1 B' O/ L; }% b. i! p  //写成一行
# Z5 w7 Z! L6 b7 O. R7 e; N
" A& `3 B# N! k/ [7 \$ @% |  }6 |$ L: i. i* r' r
3 S& Y5 S& j! y, v: k7 n
  //-->" ~$ s& H- m: N

- \9 r4 K7 Z) h5 k  < /script>
' A' [/ ^, G2 H8 D* M1 n2 f3 `. l, ]% h0 o  r1 [2 c
  < /head>: D! \8 _) w% v9 |- p# k

' z& Q- p+ @; j5 ^: h  < body onload="openwin()"> 2 `) N/ j9 T( g  j; n
( z9 N: P: ~" }& o4 ~8 r" P- z
  ...任意的页面内容... % Y2 W! ]  K$ z1 d1 q7 ?! ?
* b( R0 c4 @. g
  < /body>: S, ?; B- q) W* ^! x
( A, }* u% ]# y( H9 @
  < /html>
# ~# G1 g2 v4 S+ f  ^/ D
0 ]( b4 p5 B9 g  q! E  这里定义了一个函数openwin(),函数内容就是打开一个窗口。在调用它之前没有任何用途。
  E! ]( X6 M7 O1 J2 v: Q7 h3 V, f7 G* i" w6 S! T; o
  怎么调用呢?
! B+ O& L9 x' S1 t4 a1 ~6 A& |+ R. Y6 J9 K
  方法一:< body onload="openwin()"> 浏览器读页面时弹出窗口;# @0 q1 h: o( S( I( P

& u1 _3 _# M& e2 f$ K0 _  方法二:< body onunload="openwin()"> 浏览器离开页面时弹出窗口;: Y' j, k, c# y3 }" V
7 p( Z4 y) p5 o* _7 f" D$ p' N
  方法三:用一个连接调用:< a href="#" onclick="openwin()">打开一个窗口< /a>
0 E5 t) j- c4 S6 U2 i& W; K: }: b3 z; x
  注意:使用的"#"是虚连接。
, }) l: w( M# v: k/ r# ]5 ]& _/ j  D7 ?  S9 f
  方法四:用一个按钮调用:< input type="button" onclick="openwin()" value="打开窗口">
- ^" U: z: o" n( M
( J% h9 z3 P( I, e  4、同时弹出2个窗口
3 u7 G" n3 O+ h% A
: x. o, q; F( v7 Z/ v% `  对源代码稍微改动一下:8 Y* w3 m% \% `+ J4 {% f, \
( D# x2 e  o$ e, p
  < script LANGUAGE="JavaScript">& @/ R/ K* [2 O! E& o
% r; E) \1 V) V3 u
  < !--
% \  H& z* d! X
$ T  O( I& K9 Z! ]  function openwin() {* u( V3 @/ r1 v1 o( I3 N9 f. [5 K

7 u( k9 W2 Q& \: s, [6 U9 a! l$ P  window.open ("page.html", "newwindow", "height=100, width=100, top=0, left=0,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no")
- Z, ]; r4 V* W: e7 `
) z2 z" n% x9 f4 Y" V  //写成一行# b$ i9 E- ]' H( j
- U, z) e. M% x" U& g
  window.open ("page2.html", "newwindow2", "height=100, width=100, top=100, left=100,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no")
( ]* V8 G- F4 l7 v, x8 m* ^' A% j" v% K% @1 l* ]. s
  //写成一行9 Q# G/ l1 r" x* i, S' @

7 @9 W7 t. a) O  [  q! a/ Y. z  }
1 J7 h/ q) Q  i, y
; R! q  I, a1 D0 T$ n  //-->' e+ d+ m6 x# [# e; I8 }1 a
7 l! e( C& t  {( ]8 N& v3 w
  < /script>0 {, B! H. a. r. C) ]

6 b$ X7 W, M+ k7 ~/ D; f  为避免弹出的2个窗口覆盖,用top和left控制一下弹出的位置不要相互覆盖即可。最后用上面说过的四种方法调用即可。
! H+ @( g0 N0 [8 Q& [. G/ c: u! X( J9 D$ W- d+ n& }0 Y: d
  注意:2个窗口的name(newwindows和newwindow2)不要相同,或者干脆全部为空。OK?
* O3 d% w  P  p% n" z* ]
/ m# {. j/ i) q  5、主窗口打开文件1.htm,同时弹出小窗口page.html% @3 R7 N& Q, p% r( b, s

) M' U/ p& k. N; Z  如下代码加入主窗口< head>区:
2 F; i6 ?: @4 {4 t- w  B" B& T8 \
, o/ U$ y9 }7 Y; c+ l1 T  < script language="javascript">0 ?6 O  _/ h8 D8 {1 l
( l$ ~" u( d# x9 Y, E5 J
  < !--
. n( F8 y% w. }7 X
6 t7 v+ x7 `4 }5 c' O0 g  function openwin() {+ X+ A5 T1 Q( T* b
2 C( g  X9 r- q! J( M8 d: r
  window.open("page.html","","width=200,height=200")& ^. w% x! F& {) G3 u9 H

" k+ b. w  G. R: p5 u1 d  }
- F9 W1 l, J% j, s, i. n/ ~" p
: U# z& G2 N0 X  b& ]1 W- o  //-->
# o. M1 F$ i. V0 q/ E, C# n7 `) C2 D. d6 v% Y
  < /script>1 L7 G% p+ s8 g, ~; B

4 D& d  ~) O7 M! _- S  j1 \) }. m8 j  加入< body>区:0 E( ?3 s, P7 `1 K
, E" t+ b0 l/ K4 ?' c* w+ v
  < a href="1.htm" onclick="openwin()">open< /a>即可
" O/ [9 Q1 v. `: _
! c) Y2 z3 y7 ?9 H  a. V9 d  6、弹出的窗口之定时关闭控制 % L' q2 ~7 T- c- |. ?" j. \2 F5 R
, j: Y0 N: D" j) h5 C
  下面我们再对弹出的窗口进行一些控制,效果就更好了。如果我们再将一小段代码加入弹出的页面(注意是加入到page.html的HTML中,可不是主页面中,否则...),让它10秒后自动关闭是不是更酷了?
4 Z* S" ~' n5 N* P0 d+ P; O6 X7 @9 a' H' C( R( ~+ S$ l
  首先,将如下代码加入page.html文件的< head>区:
/ d0 H' v. H5 K2 I9 W7 |8 g6 x' M& c6 U
  < script language="JavaScript">  K6 n4 v  l: A0 [
! ], q9 I3 @4 O; e) X/ b
  function closeit() {
" ^" d6 `* X6 ]& }, x) E8 f
3 d8 u% X2 r* c" b. r8 e9 m0 T  setTimeout("self.close()",10000) //毫秒, x( p/ |7 `7 T* c. Y

/ G% m0 k1 ?! {  }
; y# f4 H; H! H+ n+ p  H' W8 a7 K) M+ [
  < /script>
; q1 i8 Y" h: I  L! J* z- Z# \6 D7 @' D, e# H2 g
  然后,再用< body onload="closeit()"> 这一句话代替page.html中原有的< BODY>这一句就可以了。(这一句话千万不要忘记写啊!这一句的作用是调用关闭窗口的代码,10秒钟后就自行关闭该窗口。) , c  r" X2 N6 q1 X* g7 W
+ Z( }% x7 U9 i: J3 E, `
  7、在弹出窗口中加上一个关闭按钮 - t: Y8 x) g/ i+ `

- V5 Y- P* W% B, Q' _8 N$ L  < FORM>. ~  x9 ]  |3 `) v/ }# C: _
  w  q$ A% z+ u
  < INPUT TYPE="BUTTON" VALUE="关闭" onClick="window.close()">
- T! S5 _$ e  C# Y
# p1 y$ q' q: v2 `/ v  \( _1 P  < /FORM>
; o/ P& Y5 H" F' h1 N% @+ p1 ~) r' v1 `: i  Y0 h: D; m8 f
  呵呵,现在更加完美了! % n9 a4 ]8 O& Y( X4 y" o: d
3 i6 p8 B5 G- R
  8、内包含的弹出窗口---一个页面两个窗口 # Z3 u& `% q3 x2 d! T% n$ X2 K

3 r' I) n. H" ^7 N/ N3 n! ?4 n  上面的例子都包含两个窗口,一个是主窗口,另一个是弹出的小窗口。通过下面的例子,你可以在一个页面内完成上面的效果。 2 f7 B+ B" L+ e! U0 O, U2 a+ j" ]
  J& T3 s2 N  Y) n7 B
  < html>2 V0 ?& r1 G; I0 K' e- b  j

; C( U& c4 u8 {$ O; G6 w' {" x; L  < head>
3 ], s. X# P, X1 I1 |) x" n# d  g, c" n3 g) \1 Y  f
  < SCRIPT LANGUAGE="JavaScript">6 q7 v  g" u: O

0 C" U* }" F+ s" r' R: i  function openwin()' f; L- h$ t7 R9 y
" d* H9 D4 x5 \
  {1 P' b  \- _) D2 l; n0 j

+ d- H+ v" K# a' J- p  OpenWindow=window.open("", "newwin", "height=250, width=250,toolbar=no,scrollbars="+scroll+",menubar=no");) S; L/ c1 W& N2 M6 {
6 F+ J) u  M8 G, i# |
  //写成一行: K) e/ ^* i4 |$ c6 z; e
5 p4 ~3 @/ V) V0 L% N
  OpenWindow.document.write("< TITLE>例子< /TITLE>"). I$ {, f, g4 p: ^  X, |! K
, t* W1 @6 A9 e  J5 ]. F
  OpenWindow.document.write("< BODY BGCOLOR=#ffffff>")
( s& o  M( L! @2 \, j% I1 B& q) m. E4 U+ h) D# W
  OpenWindow.document.write("< h1>Hello!< /h1>")6 K8 Y+ e  z8 T; {3 a. C7 y, n
9 n+ I7 [' |- _7 N- z# K
  OpenWindow.document.write("New window opened!")' ]; \( Z9 p  r  x" r8 n5 Z% V
" J. v7 ~5 j% ~7 Z4 D. l9 x9 V' H
  OpenWindow.document.write("< /BODY>")
, K; M4 \. Y6 H3 ]2 ~
4 F. f/ |. s$ }- ~* i' {) d4 w! Q  OpenWindow.document.write("< /HTML>")6 i4 ?! n; M& R5 \9 X# l) s# ]
% h% O8 X9 W$ n5 E9 M
  OpenWindow.document.close()4 M7 C2 f' q" z. J$ Z4 l
6 v! D; o; L* [: O5 X
  }6 I6 L/ V1 V7 t, A
) A; y8 W/ q2 D: P
  < /SCRIPT>
6 G! F' i) x# s. w$ H% b
3 V- O% l: \0 G% q  < /head>
7 s, J* \$ G( b3 B( \4 I) u: H
; S( @& ^4 o* f  U- |  < body>* F+ P5 ]8 Q  S8 d- x* R
$ s+ T0 n) Z' `$ z+ C1 Y
  < a href="#" onclick="openwin()">打开一个窗口< /a>! J4 a( |- w9 S9 u

# j& o0 x2 A* ^& {3 Q  < input type="button" onclick="openwin()" value="打开窗口">: t' k0 r3 {" d4 u1 A
  I% h, D7 ]2 T& i* z
  < /body>
" L! ?1 i  s" f& S& {7 x( D
# d& f, W5 {5 k/ O  < /html>
$ {4 [, _. f. _+ R; {0 D- b6 V$ o0 p* X
  看看OpenWindow.document.write()里面的代码不就是标准的HTML吗?只要按照格式写更多的行即可。千万注意多一个标签或少一个标签就会出现错误。记得用OpenWindow.document.close()结束啊。 2 ^" _) L& I) W5 J( b

4 c2 ]) Q8 @/ p, \/ r0 B  9、终极应用--弹出的窗口之Cookie控制
6 U4 r0 Q$ N+ J$ M" o" q1 e( ?/ a, I
  回想一下,上面的弹出窗口虽然酷,但是有一点小毛病(沉浸在喜悦之中,一定没有发现吧?)比如你将上面的脚本放在一个需要频繁经过的页面里(例如首页),那么每次刷新这个页面,窗口都会弹出一次,是不是非常烦人?:-(
) h% J; Y0 B9 T* j* d  o4 O; Z$ K0 R7 ?
  有解决的办法吗?当然有!我们使用cookie来控制一下就可以了。首先,将如下代码加入主页面HTML的< HEAD>区:& E1 ?0 e' I2 K( L

& P4 T) i4 C1 W  < script>+ |. j( i6 k" P* L, p1 w

8 {6 t) u9 O3 K9 i0 H7 L  function openwin(){
3 m% G5 r, s, V' Q) n9 z* F$ e8 O9 U; J6 [7 P
  window.open("page.html","","width=200,height=200")
+ Z! R8 e4 U& h2 `2 N  g( Q; r/ F( g: ?- z8 i+ B2 R- @
  }
% ]9 M+ p, u4 _9 _- B" _8 H
- n/ {/ P* q: i' x0 `  function get_cookie(Name) {
! S) X5 K' q# q) k( Z. x; Y5 k7 C& Y( }4 f
  var search = Name + "=" var returnvalue = "";  w0 l1 ~# q* {0 o2 t. c: e" M
8 Y- B! D* g. g3 y" U# b
  if (document.cookie.length > 0) {" Z  V% w1 z  c. H1 r

1 W6 e1 r5 b3 @- M7 |$ [. X  offset = document.cookie.indexOf(search)& h1 C! B$ A+ J; U( i- |
5 b" E5 V, ]5 k: k( V3 H. b' R
  if (offset != -1) {; u, N* w5 R3 G( T! P; W

, M" n5 V2 O  O" ~! |3 J  offset += search.length
/ a1 n& V# @  O* c" [2 a7 A$ [8 M$ M7 g+ l
  end = document.cookie.indexOf(";", offset);
4 |3 r- \1 }: O& b, V6 Q/ i. f+ ]! j' k
  if (end == -1)0 C8 J; ?6 R  E5 V

% W5 j+ ?& R9 ^8 ^% ]  end = document.cookie.length;# u- d  [8 L  A# a) l+ s3 P2 d

& u& ^* G: A2 C! _+ A  returnvalue=unescape(document.cookie.substring(offset, end))& ^* L+ Y1 @# c5 h
; T9 [3 `2 O% S# C$ x- ~0 T% a
  }
/ h' U; e: m) _5 C  P' n7 c. C
3 R0 S& \: Q6 `$ o# V' h, @) K  ^  }
  U9 ~; o& O1 f& ]1 Z2 t8 V' Z7 S, _, \- e2 v
  return returnvalue;
. p" U* D: s7 z- M8 Y* j1 G/ ]. Y( `3 d" p8 t6 Y) a
  }
8 P$ z( c8 o0 j
$ i" a9 U+ H' K: C0 ^  function loadpopup(){8 U  O6 M3 s7 i  i
% H) u0 A/ [* K9 ?, s
  if (get_cookie("popped")=="){7 U2 r/ `/ ]+ t  ]1 T7 @: Q. `

% i+ a; W  T  l( f0 s3 |1 c4 [  openwin()7 ^$ ?! f1 I* ~3 Q$ n3 ~! U' s
- O/ Z1 a$ z; b, b
  document.cookie="popped=yes"
$ }0 v2 B) D: O2 N6 Q) Y; m
- w( B3 W, a, t$ Z* U8 C" a9 {  }
: r5 q4 T) Q9 K( \! s
$ _; t' ?& ^4 F5 s$ m4 T2 q- T. r  }
( `7 s% s* k- w) @
' m  c& `1 \5 |: u  < /script>0 b- T+ D. u& }1 T, S1 F

" |* x6 A) ~4 R! e2 R: b, m5 ~  然后,用< body onload="loadpopup()">(注意不是openwin而是loadpop啊!)替换主页面中原有的< BODY>这一句即可。你可以试着刷新一下这个页面或重新进入该页面,窗口再也不会弹出了。真正的Pop-Only-Once!0 @% |0 v) ^: @; b
: R! k2 D$ c7 v" w& N
  写到这里弹出窗口的制作和应用技巧基本上算是完成了,俺也累坏了,一口气说了这么多,希望对正在制作网页的朋友有所帮助俺就非常欣慰了。
" v. [5 ~% H) v* N' d& d" a" Q5 ^
/ K; A9 r* Z; r  a$ I* s' N7 a  需要注意的是,JS脚本中的的大小写最好前后保持一致。
8 v) m8 ~! \! l, H2 p) C- |) G! g5 L+ M; C# }
橡胶技术网 ,分享知识,创造价值! 一所没有围墙的大学!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|橡胶技术网. ( 沪ICP备14028905号 )

GMT+8, 2024-11-22 06:21 , Processed in 0.029966 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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