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