- UID
- 1
- 精华
- 积分
- 75354
- 胶币
- 个
- 胶分
- 点
- 技术指数
- 点
- 阅读权限
- 200
- 在线时间
- 小时
- 注册时间
- 2006-5-30
- 最后登录
- 1970-1-1
|
马上注册,结交更多胶友,享用更多功能!
您需要 登录 才可以下载或查看,没有账号?注册
×
经常上网的朋友可能会到过这样一些网站,一进入首页立刻会弹出一个窗口,或者按一个连接或按钮弹出,通常在这个窗口里会显示一些注意事项、版权信息、警告、欢迎光顾之类的话或者作者想要特别提示的信息。其实制作这样的页面效果非常的容易,只要往该页面的HTML里加入几段Javascript代码即可实现。下面俺就带您剖析它的奥秘。 q8 m1 H! E6 V2 E' ^
' _0 V' a) `# i; W
1、最基本的弹出窗口代码
& x$ ], a( t" q: \) [: J; w# W. q2 E* E4 W
其实代码非常简单:
3 {: j7 u z, F4 ?- j, R4 j8 A4 J& ]; i/ c
< SCRIPT LANGUAGE="javascript">: }3 B4 w! \! E+ [
$ Z Y" e% O" o- T1 r& e3 O < !--
7 P4 m6 a& X' A. q1 H" {! Y
6 e9 A/ n1 ?0 _) X2 U3 z- ] W window.open ("page.html")/ R+ A g' T1 @% J* b) o
# c. r( n. i9 [; `" n' M6 `% e' u -- 1 R/ G8 [4 @, n* E) A0 }. A
>5 o0 v% y4 q. _5 f/ Q
; t. K3 [# S" p6 o
< /SCRIPT>
. r4 f* b: H& b3 n- u' Q+ k: o0 X
因为这是一段Javascript代码,所以它们应该放在< SCRIPT LANGUAGE="javascript">之间。 < !-- 和 -->是对一些版本低的浏览器起作用,在这些老浏览器中不会将标签中的代码作为文本显示出来。要养成这个好习惯啊。
/ U7 W0 D2 d: V C
7 e) n7 W) W. D! V8 H window.open ("page.html") 用于控制弹出新的窗口page.html,如果page.html不与主窗口在同一路径下,前面应写明路径,绝对路径(http://)和相对路径(../)均可。 8 w1 Y9 n9 _, D8 Z+ L! I
% V& U9 o9 a! W 用单引号和双引号都可以,只是不要混用。 $ a/ F1 t1 h+ k! W& M5 O
, R9 w6 t$ U2 b& D+ Z4 c
这一段代码可以加入HTML的任意位置,< head>和< /head>之间可以,< body>间< /body>也可以,越前越早执行,尤其是页面代码长,又想使页面早点弹出就尽量往前放。 也可以,越前越早执行,尤其是页面代码长,又想使页面早点弹出就尽量往前放。
" t/ W' ]5 _# V: {5 ?) _
0 E: k% m8 u! ]$ R t9 I 2、经过设置后的弹出窗口
% ]2 W( v. M9 }# r$ w+ ^5 E2 [$ u7 m) _4 G! p$ R' o$ p
下面再说一说弹出窗口的设置。只要再往上面的代码中加一点东西就可以了。我们来定制这个弹出的窗口的外观,尺寸大小,弹出的位置以适应该页面的具体情况。 $ z, m. a. a3 Y6 N- y7 q
9 M! K0 W1 h8 |9 H7 {; t8 c: U
< SCRIPT LANGUAGE="javascript">( ]! I9 c& e; _ V0 R
* \. `. n i7 ?; l3 Z0 l- U3 X < !--; s V/ l* E4 _; ]
* w+ }* o% w7 y8 H* Q4 I9 A; X 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")
7 ~# _/ g9 J( b9 J' |. \3 u6 g/ p6 h
//写成一行. _" Q6 }: c) K1 v8 V
0 K3 i1 H: ^! y9 m3 {) ^ -->
9 b& d' A, S* T+ V/ u4 a/ ^8 i E7 x0 m$ z- j% B
< /SCRIPT> 8 r+ N8 x9 a5 X7 J0 G: ?* m2 g
- R+ J# L! }; Y$ E4 |" n& o2 o 参数解释:
5 @3 k+ C( l9 S$ U& H& E# |
+ W, l! C. |1 @9 l% P% b < SCRIPT LANGUAGE="javascript"> js脚本开始;
6 z' W p3 b$ C' i8 j
( V: L$ [+ G, Y# r, \2 l/ ~8 ~ window.open 弹出新窗口的命令;
M) w& Y$ q/ ? i% S, ]! U( c$ \) G2 `. p0 X: l
"page.html" 弹出窗口的文件名;" a! z2 v1 Q" k- X4 o# b8 W
/ {6 a* d9 @7 K) r "newwindow" 弹出窗口的名字(不是文件名),非必须,可用空"代替;& {" H4 A( t& T8 X" z: y3 [
* c" \2 t3 N: T- | height=100 窗口高度;
" ]2 R/ {0 {3 M6 n* ~! B: E$ _% r1 y6 L! Y# C( f
width=400 窗口宽度;6 N. P4 d4 w& q3 } D# l
! M) x8 h& x2 Z
top=0 窗口距离屏幕上方的象素值;4 Z, W9 [9 R/ Q- Q9 R! @7 }
0 w' S8 x& E+ a' H' d4 a7 g
left=0 窗口距离屏幕左侧的象素值;
% q! D3 ~9 s+ ^( b& k
( B1 e7 C( b S9 E* D9 |: N& W$ E toolbar=no 是否显示工具栏,yes为显示;
; y" E1 H& a! M3 Q2 u$ i D1 |( l/ u% R* u+ F# h
menubar,scrollbars 表示菜单栏和滚动栏。
) p) R% q4 x3 f( M& _8 |. t+ k
3 x0 t8 \7 _5 w! _ resizable=no 是否允许改变窗口大小,yes为允许;
h/ M' \8 }4 }, j# S5 L' S; A% M% f2 N. q Z) F
location=no 是否显示地址栏,yes为允许;
: v9 F+ a6 r, T, p; |7 O% y& y' K
status=no 是否显示状态栏内的信息(通常是文件已经打开),yes为允许;
4 R4 O3 c7 F# D+ ]3 O8 }3 l
- K7 O4 \# A B* R7 M+ K. @ < /SCRIPT> js脚本结束 2 J; ^" S( ^# y9 t7 O( o
/ M; z& Y# D) j' r u
3、用函数控制弹出窗口
8 H) L8 C: S/ P3 ?9 R5 T+ w
2 X6 O1 z- H# ~2 O) c& u: u 下面是一个完整的代码:
! `( h" Y9 K2 N B2 Z
+ h& x7 X1 L) r% y! d7 c < html>
. k' [+ l1 ?/ w! ^" ?6 N$ ^' I
* m: d- i d) J/ F* w4 F, h < head>0 R! j" N k' `4 t$ E# D) b$ l/ S. A
8 g( b4 q6 V% v3 t! e8 v" G
< script LANGUAGE="JavaScript">+ _9 D2 W/ s5 ^! {7 n
$ w9 p! e6 [, w
< !--
! m% S6 H) R/ `1 g' f# z5 d/ B
0 u( i- t4 r0 P function openwin() {3 X# `/ w3 Q" Q) z4 _+ t @2 L. V1 L
1 g" L0 N5 w2 U% K( c window.open ("page.html", "newwindow", "height=100, width=400, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no")
9 Y3 F3 {" S5 n; o7 \; ^% ~/ r0 g
6 f, k% @4 U0 w0 m! y4 D. ~* j3 r //写成一行0 y8 r4 O9 ` ~. ?: l
9 s; B I5 G- C9 f8 J: \ }
1 Y6 A% F/ q' V0 A* }$ V3 i1 o3 |/ |1 ^5 C$ R( r# `8 K: u1 r
//-->
! R; Z& z' u( j d
3 C2 J6 x% [* q7 _; p1 y0 A < /script>6 ?9 w% W u" b7 \" G
4 j& X$ Q( f r4 ?' Q3 G+ r$ \ < /head>
; g0 ^" ?3 O) e# ~' L& ?$ u0 s! U: |; \" v( ? G% b# k7 L
< body onload="openwin()">
+ ]0 R! j3 R4 ~3 f
2 b6 i* C p) D/ g8 U8 S ...任意的页面内容...
; X; Z5 D8 L0 U8 e% z
6 `8 z% `. w# C1 j6 m < /body>' p$ h! o- x8 }, c
( _6 F l5 T7 ?0 M
< /html>
/ d+ d9 h% Z3 c! l' v" I/ O9 d" _% X' A3 _' Q
这里定义了一个函数openwin(),函数内容就是打开一个窗口。在调用它之前没有任何用途。
; v; G, l& e* L0 A9 u' K* k' i& t/ r% Z" d5 g/ A7 g
怎么调用呢?1 ]6 J" {5 n# K$ z" q* ?% N5 w3 L1 b
0 Q; o- J z2 ]0 c7 L) O
方法一:< body onload="openwin()"> 浏览器读页面时弹出窗口;
' e/ S6 D, u [& g+ K
8 ~! Z3 Z0 v. T( v! i k# F 方法二:< body onunload="openwin()"> 浏览器离开页面时弹出窗口;
/ f6 O3 f0 V& e4 |) o) V. ?; e0 _! S5 m
方法三:用一个连接调用:< a href="#" onclick="openwin()">打开一个窗口< /a>
& o: i1 ~2 p+ F5 a
! _* ^2 [/ n; g) X! }* ^ 注意:使用的"#"是虚连接。
! M# x/ C4 c7 r s9 h7 z( X0 C7 i! t9 F0 D; b* N
方法四:用一个按钮调用:< input type="button" onclick="openwin()" value="打开窗口">
- ?# O: S1 \& _% Q3 @- F
' z- t- @3 V: p$ [# N+ g 4、同时弹出2个窗口
" k2 R* f9 L; c- o# Y% g- a0 f/ y% d* {7 F* z/ _
对源代码稍微改动一下:* K4 a1 o8 t; T( M
) G# P$ N- \5 O5 y' c% L < script LANGUAGE="JavaScript">
5 J4 ` B7 ?# l- |; k$ {
: C1 B/ K+ `& D; ?# T < !--
* x* n8 \2 W f0 I. e% S7 A( c* T1 e* `
function openwin() {# S: B' D$ l- d
0 H7 A# e. C V
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")
0 p) r6 f- ]4 `& A8 [: O7 h8 R, n, ~1 v4 _
//写成一行: U6 W6 B! @1 g) n3 R
- ~8 N$ m( ^$ A# {- @4 M 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")
7 a4 U" n% }& f4 |3 T1 `7 T
# s1 X: d1 h0 s# p+ I1 _ //写成一行
8 B( b/ K: z1 ?2 [7 {( Q: a$ \# J% u* A/ K8 E7 u
}* [ _+ H) q9 I3 W0 G, n) O4 D
0 Q; o1 E* W7 j+ o& B; P- L
//--># T1 k0 y9 }4 B- [% R
+ c) k1 P* z# V7 H/ v2 } < /script>: M: x: h. L$ @# g |4 p
# K: F. `" o: @+ @) y, z, l" q; V" _ 为避免弹出的2个窗口覆盖,用top和left控制一下弹出的位置不要相互覆盖即可。最后用上面说过的四种方法调用即可。* I: A N1 m5 W
) M0 o9 `7 ^2 n c! H 注意:2个窗口的name(newwindows和newwindow2)不要相同,或者干脆全部为空。OK?
6 G3 D/ n) K# G( [; K2 j' ]+ G K6 Z% p. F
5、主窗口打开文件1.htm,同时弹出小窗口page.html% m- l4 n( q2 ?/ n' z. M
6 q2 e8 N( Y" T2 X# ~
如下代码加入主窗口< head>区:
8 o; t% \: e- y, a6 I+ x, f3 ^6 s0 ] N3 i1 z
< script language="javascript">
; e3 h; R$ ^2 R* B& u
' }2 a& c2 ?5 O1 | A' L6 L" O L4 \ < !--4 K5 F5 N' |0 S% v3 q" B. }! M
i6 O8 Q6 C0 E+ e
function openwin() {0 X% z; G/ R. e& k
9 v7 |3 M9 Q. R; p7 A window.open("page.html","","width=200,height=200")* L; m# A7 `0 M8 l. t4 b' B
, @4 ]/ M2 a" n) N( o$ l1 l
}
0 `1 j% E4 r# y4 i6 B% J2 x
l3 D0 A: ^" g( J: i( t$ F/ V //-->
; x' q [) W3 _& O" a, n. T! Z" N( u0 E' U( T4 @
< /script>6 |0 W8 `2 z( L3 E& Y
9 R# x% o6 C* D3 X7 [9 i 加入< body>区:( }8 d% B6 k J/ U
7 q% g0 V/ b1 b+ f# |9 T < a href="1.htm" onclick="openwin()">open< /a>即可
& X1 H8 m7 n5 r4 q+ Q5 }
: R3 k' u0 E: \" y2 A' s 6、弹出的窗口之定时关闭控制
# J/ X5 ` t# H/ q! L/ i1 D6 Y# k* p/ n
下面我们再对弹出的窗口进行一些控制,效果就更好了。如果我们再将一小段代码加入弹出的页面(注意是加入到page.html的HTML中,可不是主页面中,否则...),让它10秒后自动关闭是不是更酷了? 3 o/ v! M/ \* E: s
" r* o8 @6 V0 \5 W( p$ w$ i) D 首先,将如下代码加入page.html文件的< head>区:( |2 F7 i* k: U: e) k; f+ J: c
% b0 O6 d- q5 ]
< script language="JavaScript">; {0 C5 }7 L* ~$ t7 N& W
% f! Y; t9 B* [& c
function closeit() {
/ K( A% m' t% W, h- H+ W/ m( ~0 W3 o
setTimeout("self.close()",10000) //毫秒
1 b( C8 a0 P9 e6 R+ x6 |8 k- E; f6 c& K" r/ i. o& Y
}
$ V! x; M2 b: x& w N5 H. K7 f3 s! {4 R% w, ]1 t' z& Q( K; b& y
< /script>- E# `6 L5 v, T
( u4 ^& ^* t, r9 A, b7 K. ^' @
然后,再用< body onload="closeit()"> 这一句话代替page.html中原有的< BODY>这一句就可以了。(这一句话千万不要忘记写啊!这一句的作用是调用关闭窗口的代码,10秒钟后就自行关闭该窗口。)
4 {* U( e ]! B
3 _0 C& @( g" O% ` 7、在弹出窗口中加上一个关闭按钮
( @! L& {) ~& |4 ^' F! x2 l! h' d1 Q7 B/ g- F1 |
< FORM>, w. c! {. [3 t
, G8 d' c4 M! K& _3 K$ D w7 j2 l < INPUT TYPE="BUTTON" VALUE="关闭" onClick="window.close()">4 ]: f' A4 j& L4 r. O& H, @" H
/ z/ P) J, q- i, B < /FORM>
( Y& g- H# Z5 Q
. p& r B5 B, F3 s" ~ 呵呵,现在更加完美了!
7 s& C4 r1 `& e+ X& b8 J* `0 w* N& w. h D, z1 M- D
8、内包含的弹出窗口---一个页面两个窗口
- s# k j V _8 a. x- N9 ]. l) Y1 W7 p# H
上面的例子都包含两个窗口,一个是主窗口,另一个是弹出的小窗口。通过下面的例子,你可以在一个页面内完成上面的效果。
$ Y! d' L L7 f7 J( e
0 z8 r( S0 d) p& o h1 M < html>
/ p* B$ E" @/ C6 s
, k g. s" `. Q0 X < head>" Y0 U# h$ A0 G; u2 d# i
& n2 s; U" c7 }+ l9 I% R
< SCRIPT LANGUAGE="JavaScript">
( r# s; J& g$ R
1 n1 m2 ^- e# j function openwin()% [% p/ ]# h3 c, J3 ^
. j5 P4 H' u1 @- t0 s; L {
. }6 ~/ b0 T) i- G+ t* |" u7 n0 G( I( n2 H# |' ^$ {
OpenWindow=window.open("", "newwin", "height=250, width=250,toolbar=no,scrollbars="+scroll+",menubar=no");% a9 Y" a Y1 F9 w& q% \
/ \4 S( ]9 X2 B/ t* Y
//写成一行
- }! u/ y! `3 U& _' d$ N7 ? b. n7 V& M; b: t5 f
OpenWindow.document.write("< TITLE>例子< /TITLE>")7 @+ h. V) H/ \; }
9 @" `$ W& B! O# m9 Y/ T OpenWindow.document.write("< BODY BGCOLOR=#ffffff>")# }* d1 p9 q, Y6 a* R& q9 [& J
p# o; H( k& P& [3 f: [- y, M
OpenWindow.document.write("< h1>Hello!< /h1>")9 ]# o1 t' q, I4 v0 M# i) d( U0 O
. ~4 ~, ~$ U; r6 I OpenWindow.document.write("New window opened!")
' `( T* y/ [6 Q- o8 c& C! Q: v- b7 m! T& Q# [
OpenWindow.document.write("< /BODY>")& ~9 U, A" y' p
6 C; }$ O6 j! ^* d2 P4 Z$ V
OpenWindow.document.write("< /HTML>")5 _0 o9 [' i8 Y+ V; H6 ?
! w% a+ S, p# g: \7 p OpenWindow.document.close()
s( |# c( j. z J# e; J! ?: K" N' K! }# E' R1 ^/ v; n
}
7 d& N; `. K3 u6 |1 i: m$ B4 j, i- z5 g" |. l% X
< /SCRIPT>
6 o! D8 G5 c; h# A* |1 ]+ R0 M4 i" h' G% a0 S
< /head>
2 W+ W& H0 A- t( p0 f8 z+ |" i: r* w8 \; e
< body>
Z& L3 x$ [3 o( y" P4 e" b. }) p7 }. j" }% J5 D b' ]
< a href="#" onclick="openwin()">打开一个窗口< /a>
- V/ E2 r/ g% X" y+ ]8 A
4 o7 Q' s- _ h/ b; u < input type="button" onclick="openwin()" value="打开窗口">5 y! B& I6 [( R* j
: n' |; {; ^0 x; B) J < /body>9 Z" C5 E2 ?' D" C. U
1 R. p. M& }/ W c < /html>
/ u2 b8 O( ]: t0 m, h% I
3 n6 N/ K1 \) s7 T* o- [ 看看OpenWindow.document.write()里面的代码不就是标准的HTML吗?只要按照格式写更多的行即可。千万注意多一个标签或少一个标签就会出现错误。记得用OpenWindow.document.close()结束啊。 , t4 _: e; ?# l7 q& M' g
2 q: H. h6 y2 c) D7 H
9、终极应用--弹出的窗口之Cookie控制 4 a8 z: \, {& v2 ?: k
& b2 S) Y) `( j6 [ e3 ?6 ~ 回想一下,上面的弹出窗口虽然酷,但是有一点小毛病(沉浸在喜悦之中,一定没有发现吧?)比如你将上面的脚本放在一个需要频繁经过的页面里(例如首页),那么每次刷新这个页面,窗口都会弹出一次,是不是非常烦人?:-(
3 D7 k/ V2 r7 n6 W* T. G6 @, p r0 V9 E. X! j
有解决的办法吗?当然有!我们使用cookie来控制一下就可以了。首先,将如下代码加入主页面HTML的< HEAD>区:
, f5 d* O8 ~% q2 c; e4 H
}* u; V3 U! \( a8 U+ r < script>
4 q1 i# ^ {2 P/ R2 ]! u# X+ P8 a% C& Q, L7 { u% r
function openwin(){
3 o8 [/ Z5 ^8 S& @; R) }% K2 S' I% k, N/ Z
window.open("page.html","","width=200,height=200")
. g$ V# o8 \' Z/ u! L" `
1 p5 n# n0 t4 q }( Y9 |# e5 {" ]' D# b6 r* g
8 {- ?+ k% S) o9 Q: y. w
function get_cookie(Name) {
6 h# ?2 ^3 r4 @4 X* o {$ N' a$ \! q! P" u& t) ]- r8 h
var search = Name + "=" var returnvalue = "";3 A& {8 y# i5 Z: A( i8 U! Y
3 o+ p. b2 A6 X. S/ P if (document.cookie.length > 0) {4 ]& R9 U! l* K2 ]
7 p. }5 O' l+ h8 f# x) Y& X& S( |$ F
offset = document.cookie.indexOf(search)7 T% X9 v+ D) F9 k4 {! X! g
1 k, r5 H0 ^: _. g* i if (offset != -1) {
/ ?' O0 t. |. z6 @
4 W2 ~4 a1 i# H% M3 f offset += search.length
1 ]3 ?% F+ o( s# |1 n/ l# D) s& ~$ g5 I& M7 ?
end = document.cookie.indexOf(";", offset);
7 J+ h/ ?+ a( f; V2 E7 S, e" y2 @& S( t( I& Y
if (end == -1)( Q. t& w2 V3 C+ z8 {' r) K
; M6 G: \$ C) F% _ end = document.cookie.length;
) N* j: ^ I6 s3 ^* e: u1 B/ p0 b5 n6 t, G0 N* s R
returnvalue=unescape(document.cookie.substring(offset, end))
1 u9 w. K2 w# d
: E: N0 }7 j* J! Z }
3 l. b/ Z+ k+ ^6 b; W0 a% z- G/ S) G! X6 Y) U
} ]9 J+ ]* k# w# _( T; t
7 S) t" Y0 c! i4 f1 J
return returnvalue;
- l8 R; O# Z0 A& J# O" k8 e; U2 ^
( y6 s- f9 V* b }
n/ c# _9 A) A2 U! Y( @ B3 n( C
& {4 @ e q5 B8 m function loadpopup(){; R' T9 g `6 f$ r& L: k& ]+ [7 K6 }
9 b0 [/ }( d5 b _3 N1 D
if (get_cookie("popped")=="){2 t( a5 e6 e5 \3 Y2 r+ r1 a ?/ @
2 p# H1 K9 \' T5 p openwin()3 {. N9 {& J4 E+ G. a J' O
/ S( z" n; \' V: D; j3 b document.cookie="popped=yes"
# t _1 P8 J$ j2 U! @" f. h+ X( f2 K! o; {3 P
}
' C0 j* i' b2 T4 `2 N( @# ^4 X+ F* I: w
}
& }! _! ^, Z! V3 F2 O
L; v( ]! [6 q1 ], g, p < /script>
6 a' g) o' i: f- b! K& G9 I! p6 A8 ?) Z1 a+ Q
然后,用< body onload="loadpopup()">(注意不是openwin而是loadpop啊!)替换主页面中原有的< BODY>这一句即可。你可以试着刷新一下这个页面或重新进入该页面,窗口再也不会弹出了。真正的Pop-Only-Once!( B5 W$ M# ?" D- [
j6 ?: o( e% {; p5 c5 W* Z 写到这里弹出窗口的制作和应用技巧基本上算是完成了,俺也累坏了,一口气说了这么多,希望对正在制作网页的朋友有所帮助俺就非常欣慰了。 $ J# ]$ u2 u: r2 `
1 V P8 T8 y4 t9 E6 V
需要注意的是,JS脚本中的的大小写最好前后保持一致。6 \$ q9 ?% }5 e" N8 q
( H8 \! a# d; X, b, D5 V |
|