- UID
- 1
- 精华
- 积分
- 75304
- 胶币
- 个
- 胶分
- 点
- 技术指数
- 点
- 阅读权限
- 200
- 在线时间
- 小时
- 注册时间
- 2006-5-30
- 最后登录
- 1970-1-1
|
马上注册,结交更多胶友,享用更多功能!
您需要 登录 才可以下载或查看,没有账号?注册
×
经常上网的朋友可能会到过这样一些网站,一进入首页立刻会弹出一个窗口,或者按一个连接或按钮弹出,通常在这个窗口里会显示一些注意事项、版权信息、警告、欢迎光顾之类的话或者作者想要特别提示的信息。其实制作这样的页面效果非常的容易,只要往该页面的HTML里加入几段Javascript代码即可实现。下面俺就带您剖析它的奥秘。 / w! e. `+ w8 P3 L
8 U: |1 I5 w X3 q- Y 1、最基本的弹出窗口代码
, x" L" A1 l) F+ U2 c G
4 k5 F5 x F& O! ~3 U7 F& y 其实代码非常简单:
/ W# F/ M9 V% P2 i* L& n# _
9 C& Z# m S- j# l7 Q R7 v2 X < SCRIPT LANGUAGE="javascript">5 }7 S1 `" \/ T/ v. t- o
. M1 O1 F9 l* O0 Y < !--
9 e2 H6 s( O* ^& F& A
: H( t" A1 ^! e. z8 Z1 \ window.open ("page.html")
. a: L( D0 m7 R5 Y! g8 j2 F( @, E/ D R
-- : n! h- C- S, T7 k: { ?
>( b E% Q5 X( j( [7 f9 L" W6 G" y0 Q
3 B3 a; G: ?9 |& o6 e < /SCRIPT>
E0 u8 Z4 r5 {% x" w9 ?# j+ k7 {! k; E8 S3 K, b$ X7 Y4 M
因为这是一段Javascript代码,所以它们应该放在< SCRIPT LANGUAGE="javascript">之间。 < !-- 和 -->是对一些版本低的浏览器起作用,在这些老浏览器中不会将标签中的代码作为文本显示出来。要养成这个好习惯啊。 + D& m! r# t/ N1 k! B
q* W1 o O8 _& y. `+ ?. e
window.open ("page.html") 用于控制弹出新的窗口page.html,如果page.html不与主窗口在同一路径下,前面应写明路径,绝对路径(http://)和相对路径(../)均可。
) K( s/ U8 o' R0 q. `- b3 \
( W6 T5 M" f% a+ q$ S" v$ n 用单引号和双引号都可以,只是不要混用。
* p$ e+ D. c, ]% }; C# b
0 }# ^( d. e, y. D 这一段代码可以加入HTML的任意位置,< head>和< /head>之间可以,< body>间< /body>也可以,越前越早执行,尤其是页面代码长,又想使页面早点弹出就尽量往前放。 也可以,越前越早执行,尤其是页面代码长,又想使页面早点弹出就尽量往前放。
2 t- B. N+ I) }5 `/ ]& {4 ~- S. K: R- h0 ]' a. b
2、经过设置后的弹出窗口 # F1 V& e U8 g+ f( J3 m
/ K6 c5 F2 b" o 下面再说一说弹出窗口的设置。只要再往上面的代码中加一点东西就可以了。我们来定制这个弹出的窗口的外观,尺寸大小,弹出的位置以适应该页面的具体情况。
% V* C% ^! c) h- S/ a* M) a) l% B
< SCRIPT LANGUAGE="javascript">
0 r% y+ X3 b( }! t P; Z. I5 C, E
9 i# A9 v. \. L( g2 O E( Z; f < !--
9 z7 j( L+ l8 P5 q/ M% M1 |) C* `% d3 x7 K A, y
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 P' D6 Z. z1 _ Z0 J
1 t$ a c ~4 T, F Q( { //写成一行. s# a9 G( {% D/ S- p; t7 }
$ @, `8 X; k8 V# H% B. J7 {
-->
* G9 f, S9 ?! P7 R% m, I( L
3 K" }, U; a3 K" |; J( @2 Y < /SCRIPT> ; ]- T; {6 B8 M" e
: Z/ _: n a5 h' P" L. _# d
参数解释: 7 G0 l6 ?* o. H( w0 h Y
, d# v5 q$ Q' [) M$ D
< SCRIPT LANGUAGE="javascript"> js脚本开始;
. v0 d Q' g! U1 `% |6 D( y
3 g0 t1 s M- r% x3 V' K' i5 l window.open 弹出新窗口的命令;; R2 |% f+ O1 k* y8 @+ h) B* E) y1 t
g- k- z- p9 v. x "page.html" 弹出窗口的文件名;' S6 U& n2 O* g- j, D, W3 ]+ d, o: }
" A. G: H5 C) Z$ I5 i1 o
"newwindow" 弹出窗口的名字(不是文件名),非必须,可用空"代替;
0 |, C9 I, C) `
9 }8 p; r- v. k5 w) m height=100 窗口高度;
/ u A6 F7 X. f# `6 m& R
2 L, B/ G* W$ a5 a, P, k width=400 窗口宽度;
/ D. g1 u& J6 q9 u8 b. R* v9 o t3 P( O9 x6 X) [
top=0 窗口距离屏幕上方的象素值;
6 @+ C. }. `0 N) i/ J( L$ s) E4 s5 `
% t& N) H7 y# P5 T; z) L left=0 窗口距离屏幕左侧的象素值;
% h% Z( X0 P. A) ~- _; [$ w( r: z9 S K5 F5 m
toolbar=no 是否显示工具栏,yes为显示;
+ B8 ]) o& @7 T* r* q' t( m3 p9 D& Q! e+ ?. A/ o) F
menubar,scrollbars 表示菜单栏和滚动栏。0 y I3 l) Y$ ]* `: }1 x
& g/ v* S C- v" P- P5 F- \0 H# L
resizable=no 是否允许改变窗口大小,yes为允许;
' [, r1 Z4 _% Y& V5 q; t
& m+ `( b( G" z- ~: X3 i location=no 是否显示地址栏,yes为允许;$ `& {6 o" @ Z7 B- x0 K y* _
# P9 [/ ?) j5 c$ J; T status=no 是否显示状态栏内的信息(通常是文件已经打开),yes为允许;
9 ~2 \% z: b; g5 K7 ^: ]( k$ J2 y+ N
! P. K. k% b# P < /SCRIPT> js脚本结束 ; ^; K: x4 J9 c7 B2 {4 T
( ^+ N( j* x! p7 ^& ~8 P
3、用函数控制弹出窗口 6 O% s: f8 k2 y
( |: }# b. ]: P& p& {, G( R( ?
下面是一个完整的代码:
/ o) j8 ] E) D4 R' y% Q0 u$ h) V( D( B' a C3 Z+ B& X
< html># \; s7 v2 S6 Y6 R" N, a
$ F r8 t- W; X% V4 Q. J < head>6 W d% D) s5 i$ r- B0 _
0 {' B) p% u7 @, \ {6 `: ? < script LANGUAGE="JavaScript">4 w1 u. u5 A7 J$ }- c9 J
1 S( g; h D/ _& P3 B
< !--
* U6 A7 Q0 k) X+ R8 c0 g' m4 }9 c% z$ b+ Q0 W/ a0 K
function openwin() {
E3 W' d6 E) n0 F4 }% M! S$ V! J, d) C$ n4 k
window.open ("page.html", "newwindow", "height=100, width=400, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no")! z9 L; h: T5 P. G% k
$ I; {. i8 _# h# C! Z //写成一行
1 R' _; j5 a, A [* n
$ ^2 n& X1 W w. S4 p }6 H4 U7 a! C' s. h! [" f
+ }3 x) _% d$ } //-->
" s% d: a0 ?# h, S7 Q1 r* m+ d1 w' R! q+ ~0 z2 g
< /script># {- C0 `+ {, ?" G0 Q; ]. z
% x; U: V/ Q2 _! ~. C6 S < /head>
# N) B0 S( ?9 `8 I! d: }8 T! U$ a5 M; o: s1 p0 \$ E" T( B
< body onload="openwin()">
; d2 O7 P/ V* R7 f/ S7 b" z8 T, \
- [0 T8 [( T( g5 e: ^2 K# P" F ...任意的页面内容...
! M. _$ h6 _& H. X/ \7 ^9 Z/ @
! A2 |, z; b/ G$ u& ] y! r < /body>5 f; Q" p4 o6 c' B
- o. F5 R8 S. p8 \6 W
< /html>
( S0 ^- l3 w) o% F" H q9 X: J- f g: M
这里定义了一个函数openwin(),函数内容就是打开一个窗口。在调用它之前没有任何用途。
8 w+ a/ ]( x! M( y# |- n
5 e+ T8 d0 z& ?- z3 p. \( C 怎么调用呢?
. d) A. Z; o2 a' f1 o/ E$ ^* b* K) J8 G8 B, }$ G- I3 C4 N* n& H
方法一:< body onload="openwin()"> 浏览器读页面时弹出窗口;' L1 Q. m% S# `' T' e. ~
J, z8 Y1 w# E6 z y) L 方法二:< body onunload="openwin()"> 浏览器离开页面时弹出窗口;
1 q) h6 ?( g' W* X" m5 m8 ]( u; E9 F& M( g! q; P7 u3 v; x# z
方法三:用一个连接调用:< a href="#" onclick="openwin()">打开一个窗口< /a>
7 _1 o0 b1 Y3 ^6 X" t4 o# _) ^
% P9 V+ i/ @# y) J+ j4 B 注意:使用的"#"是虚连接。9 u1 K+ F5 K# i- V9 m9 @
k- j8 e" l5 Q: q9 m- f" f# D0 d9 l) A
方法四:用一个按钮调用:< input type="button" onclick="openwin()" value="打开窗口">
( Q. d# r5 [1 }/ f t: p
! ]8 o# c m0 }" B 4、同时弹出2个窗口
- |6 A+ }( Z4 `( V6 I- ^: _; e- ~# K* }- _! g2 b
对源代码稍微改动一下:# x0 ]% c6 }: r n
7 a2 Q& G% H3 T7 h9 E
< script LANGUAGE="JavaScript">
& Y# J" K. \( y0 `+ N' q- c
: _/ t. {: o4 [3 N < !--
6 X) O @) t9 ^ M/ G2 V
( w6 i/ ^, f: V' ]' R2 C function openwin() {6 l1 d2 M. {' L. y3 s
$ W4 F+ T& C# A 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 u+ {2 N6 m1 M; f& t4 b' t1 D/ E0 ]
//写成一行! G, J% F& I4 V1 u) O& _! M
2 h" C" \) Q! Y; x- s& A, O
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")
1 L: g, T4 t) H6 }8 L+ ^- U: {' H4 n, B" u& |
//写成一行' w) M! y" V9 K6 B0 J6 q
9 {) K1 _5 f. M0 L! d3 a
}4 X! h+ w7 ] R' r( X8 _2 I' a
2 o$ _* w* x9 B9 U' s- i //-->, q: U% l9 h- k- R6 y; D" T
6 ]4 W) `% m7 k1 D9 j < /script>
' v" g. p8 l6 ^! f* N# {; j( h0 Y3 y
为避免弹出的2个窗口覆盖,用top和left控制一下弹出的位置不要相互覆盖即可。最后用上面说过的四种方法调用即可。. `. f9 V6 S1 U. J5 n
% F6 x- P# U0 h/ G) `& D5 I 注意:2个窗口的name(newwindows和newwindow2)不要相同,或者干脆全部为空。OK?
9 A0 F. g4 ^+ X4 j: C6 Y( F7 m- U/ [% J7 w
5、主窗口打开文件1.htm,同时弹出小窗口page.html8 P& }8 @8 M3 ]5 w- }; P
1 e5 x- c6 i+ g# G6 H
如下代码加入主窗口< head>区:
/ K1 f* l; ~4 p$ E) h1 V5 Y4 }3 H7 I" s9 N, ?
< script language="javascript">$ q- D, O$ b( a" H9 @. Y: C
1 B1 L. }1 E* l, O* Z- c/ L
< !--) \$ W6 d. O8 K& C+ C9 V. M T+ L
- W2 u4 y' [0 M1 X# y# E
function openwin() {
/ z* ^8 }/ B0 B; w! g6 T+ ]
) o( y7 d, i B3 _# A window.open("page.html","","width=200,height=200")
, C( I1 ~) T3 T
9 W$ i- k) l* s5 e. S2 A }
( ` t7 b/ Q" d; C G# N t
. b' V) U p" D) t& T$ M //-->' D, v4 _& W7 \' p1 q
* t) a, \$ H7 a5 g. F- f: \) i < /script>0 x8 |% K$ w7 g* Z
7 g" ?$ F6 m7 u3 i6 {0 i3 S1 U 加入< body>区:8 o6 S7 C+ o: r5 U, p H7 {
) T5 a, z! T+ z5 N < a href="1.htm" onclick="openwin()">open< /a>即可
$ z5 j* B+ l, d4 F2 v. K1 b+ v9 F- f. D5 J0 A
6、弹出的窗口之定时关闭控制 & S! ]1 K! k* f9 V. H% ?8 W6 Z
" q6 m" F* L* G( O4 u5 I; K
下面我们再对弹出的窗口进行一些控制,效果就更好了。如果我们再将一小段代码加入弹出的页面(注意是加入到page.html的HTML中,可不是主页面中,否则...),让它10秒后自动关闭是不是更酷了? + { }1 }+ t: ~. _1 d
4 ~5 J6 a# _) q: v7 Y# U 首先,将如下代码加入page.html文件的< head>区:
. Z7 {8 ~* Y; ~8 ]; ~. l& X8 ]( x1 u0 F/ J( i
< script language="JavaScript">3 X( ^8 D, j1 q/ ]7 n9 B
1 `5 f/ C6 a# t) w' O, ^4 s function closeit() {
! [4 l+ \+ d3 t$ j* L t' i# ?2 D
/ a/ J6 Z; `/ _% e* E3 r% q8 G$ X setTimeout("self.close()",10000) //毫秒
6 z! a w7 \7 _" z4 z
0 p7 S# \! N3 G3 w) r3 v2 e }
8 ^3 _( C# }" y
8 U5 H& {, j" h6 L# ?$ l < /script>
+ Z2 { K& K' M8 `) K' c' U* x) h* ?- c
然后,再用< body onload="closeit()"> 这一句话代替page.html中原有的< BODY>这一句就可以了。(这一句话千万不要忘记写啊!这一句的作用是调用关闭窗口的代码,10秒钟后就自行关闭该窗口。) " ]4 P9 n" V* m! |& ]: K5 v
' }' c2 i/ H7 g! n. H4 Z
7、在弹出窗口中加上一个关闭按钮
+ X) y2 N6 ^$ l& G* r8 {" W4 V0 u! ]0 D4 [6 r( I3 b% q
< FORM>
& S) t z; V& L4 K0 x. [
$ |8 I- E* @# h h1 P < INPUT TYPE="BUTTON" VALUE="关闭" onClick="window.close()">
|$ }6 I" c4 [
* l+ L# o/ q. E- O/ o: H < /FORM>
9 ~: ?2 M6 y( b$ t
6 E* u4 p, l5 O! Y! ]* H& W 呵呵,现在更加完美了! ; z# {" ?8 A: i9 `1 J
% a! v r0 A, Z* h( k% g9 V' Q
8、内包含的弹出窗口---一个页面两个窗口
1 Z. M/ e$ D# z* n! V% L8 E" }0 s2 W2 \2 S
上面的例子都包含两个窗口,一个是主窗口,另一个是弹出的小窗口。通过下面的例子,你可以在一个页面内完成上面的效果。 * R! [7 U. Z: ~. L% I
& @1 T2 X& g! `8 |- M @3 \3 ~
< html>/ K- c2 J* k+ }7 ^
! E1 i5 \2 p V, ^6 e: ^ < head>0 U/ k) A" X5 A
8 F. Q( F' Q3 o$ i; \& @
< SCRIPT LANGUAGE="JavaScript">
# _4 D1 z( k; S. `% q2 a2 K5 H) E G, O/ B: V8 F
function openwin()
p" y1 g" h! U- x6 {" O0 D: ?% w' n8 v& L+ v e: B- w8 ^' v
{
/ X' J- x5 ~- Y. P" \" i
' U3 w3 o' [/ ?1 r0 Y1 A6 K OpenWindow=window.open("", "newwin", "height=250, width=250,toolbar=no,scrollbars="+scroll+",menubar=no");9 x4 C, m: S' z5 s/ u$ R
3 [2 _$ u2 D6 w //写成一行
/ i" K- z2 C; i0 o0 @9 _, ~/ b Q6 N& ^3 o' ^" T' x0 z. [
OpenWindow.document.write("< TITLE>例子< /TITLE>")1 w$ a1 W" O' c$ r
; R* s Z/ h I- G4 T" [
OpenWindow.document.write("< BODY BGCOLOR=#ffffff>")
# P& m3 |* C0 |9 P2 G( t8 _) g) k5 ~& v2 V5 z2 ~+ q/ A6 j
OpenWindow.document.write("< h1>Hello!< /h1>")6 e4 C, ~" ~* b: i5 J
3 l* T' W d8 h/ L OpenWindow.document.write("New window opened!")
4 g+ \: n6 Q: l" b$ h6 F7 @* p& [3 P
7 w( }6 P' @3 ^4 D OpenWindow.document.write("< /BODY>")6 R! f0 w& h" A( v: ^) o3 F+ ]' z3 R
$ i9 H8 p! E! F9 j- a5 Q
OpenWindow.document.write("< /HTML>")
1 u5 M+ t+ T: z7 V0 m( F5 I, l' m7 z7 G& Q
OpenWindow.document.close()7 K! z8 E* C6 M' V- t
! t N6 V5 U* K6 Y% e A
}
! Z% u- d# C) T! H) _- u# s) k( c3 d: m# g
< /SCRIPT>( L7 [1 g8 n* u' Q* o& Q
$ @* w3 k' g4 {2 W < /head>/ `2 z* n( X+ `9 i, |0 Z
, T1 D' K( ?0 q% r& e) D < body>4 h& G( @) v2 a! O3 _7 m
6 o5 D4 l0 y" e9 _
< a href="#" onclick="openwin()">打开一个窗口< /a>& Y+ o4 u, P4 o) }5 K$ `- I: Q
1 P- k2 V- q- z6 B3 P) g < input type="button" onclick="openwin()" value="打开窗口">
8 `& J0 r; X( l. ]; h: b0 x) t! d
< /body>
& R( L5 L& d0 K& ]* X
& f& n( p# m$ R5 H, W6 {4 M < /html>
, o* ~+ n: y$ Z/ s9 g
+ x) Y' P9 Y X- K- s R7 b 看看OpenWindow.document.write()里面的代码不就是标准的HTML吗?只要按照格式写更多的行即可。千万注意多一个标签或少一个标签就会出现错误。记得用OpenWindow.document.close()结束啊。
+ L3 s* ?) W* }6 B0 @: B p+ s4 A" F5 v! H. h7 X
9、终极应用--弹出的窗口之Cookie控制
3 e3 J- L& g9 m9 J' M# L6 `# R3 s3 G1 p4 x0 h {& O
回想一下,上面的弹出窗口虽然酷,但是有一点小毛病(沉浸在喜悦之中,一定没有发现吧?)比如你将上面的脚本放在一个需要频繁经过的页面里(例如首页),那么每次刷新这个页面,窗口都会弹出一次,是不是非常烦人?:-(
- n7 i2 o* h; Z# P; A- z1 c8 k
- |: F) L2 `9 t# i! L# o 有解决的办法吗?当然有!我们使用cookie来控制一下就可以了。首先,将如下代码加入主页面HTML的< HEAD>区:
( |: T! U4 A+ V/ }/ p8 N) Z/ D, h9 b- V) k3 h- a
< script>3 K* W% t8 c' |% m, j% p! L( [
2 `! b V) z! F( m$ k" d7 F function openwin(){: {! r( X+ M: K
: b( w3 u) s6 f( c! I window.open("page.html","","width=200,height=200")
& p, @0 v' T3 J7 L Z. o! ?9 S! w1 i; Q
}
' Y* h! B2 {4 A+ G
' d( b$ n8 }& {$ _( l function get_cookie(Name) {
$ ~! X) u7 T5 L) Q! E1 J& [8 V6 t2 \+ W. A2 S9 C
var search = Name + "=" var returnvalue = "";. J, g2 i* j7 s$ Q7 x
2 C9 E3 h, [; l8 B if (document.cookie.length > 0) { j- [& X& M0 T V9 `4 m6 a
2 P! }% z4 B$ c# {: s; c
offset = document.cookie.indexOf(search)
, g: G6 T! H6 b, r- J- G5 e, M! U7 S5 \' f( Y
if (offset != -1) {
9 l( k/ b& S0 S
! @) X5 G a9 |7 M* g3 ` offset += search.length# {& ?5 x* L% D
6 {6 t. t6 q$ ^$ s: T3 _
end = document.cookie.indexOf(";", offset);* L9 I7 v& q& M: {0 C2 s5 _6 N
: y; V9 k9 p- T) r' n; X* Z if (end == -1)) X1 p( B# q* m) c- b4 D
2 B, t, H7 ?, _8 X" K% i
end = document.cookie.length;8 q2 e& E6 H! \( l( X4 K/ |
0 S0 [% R; T5 R& a9 e4 Q9 |% J returnvalue=unescape(document.cookie.substring(offset, end))
2 t6 G" L9 R- p4 O& w6 P, t+ D( z" o& i; m! v" I6 A. F: q
}
% g: h, I) [% ~6 a, p5 i
% v2 f2 B3 Y& ] t3 c1 I }% M5 {+ A4 y- A) r" J
1 } k7 z( d: h: T5 D+ g
return returnvalue;' Y- l4 P! i# G1 ?7 i
. P( _* u4 B! y# i( t+ h
}. F' d6 {, W4 R% c0 [
! ?9 _5 M" u5 k
function loadpopup(){( A4 y, y7 @4 f" K
# t6 }2 k: S, O6 c
if (get_cookie("popped")=="){
( B: f4 \& \. {: ?$ a% V/ Y n' G2 l( S& J$ d
openwin()5 Y6 O% i0 O3 k8 }6 I; L
; ~# o( c" h! {5 G( z
document.cookie="popped=yes"7 f7 h) Y6 U/ ?, m- c6 o4 H
" ^: t T2 X4 q) i# p3 Y }) a' I. W2 I3 L* {: @. H
4 h: o y* b% `, m# b% E3 B }( t: P/ O' O) |) Z% Y% O
) a1 F5 r; z) I+ J/ o5 c0 d" U, H
< /script>
2 b3 d8 _/ E# v! v$ P' C0 ]( c' I' }& r- c3 R0 }9 z
然后,用< body onload="loadpopup()">(注意不是openwin而是loadpop啊!)替换主页面中原有的< BODY>这一句即可。你可以试着刷新一下这个页面或重新进入该页面,窗口再也不会弹出了。真正的Pop-Only-Once!
. D! h ^' Y+ Y+ f) C; T$ O/ Z6 Z2 R! F, k; x+ E- z
写到这里弹出窗口的制作和应用技巧基本上算是完成了,俺也累坏了,一口气说了这么多,希望对正在制作网页的朋友有所帮助俺就非常欣慰了。
0 Q; W5 H8 k9 @% [, G: b
! U5 L7 f& U O9 T# \; d6 A+ B! a! F 需要注意的是,JS脚本中的的大小写最好前后保持一致。+ ~" t1 V9 Q# O+ C& x
' R; t5 g. Y! t2 r: {
|
|