- UID
- 1
- 精华
- 积分
- 75304
- 胶币
- 个
- 胶分
- 点
- 技术指数
- 点
- 阅读权限
- 200
- 在线时间
- 小时
- 注册时间
- 2006-5-30
- 最后登录
- 1970-1-1
|
马上注册,结交更多胶友,享用更多功能!
您需要 登录 才可以下载或查看,没有账号?注册
×
经常上网的朋友可能会到过这样一些网站,一进入首页立刻会弹出一个窗口,或者按一个连接或按钮弹出,通常在这个窗口里会显示一些注意事项、版权信息、警告、欢迎光顾之类的话或者作者想要特别提示的信息。其实制作这样的页面效果非常的容易,只要往该页面的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# }
|
|