Atea - Hero's Grave

面向对象,开源,框架,敏捷,云计算,NoSQL,商业智能,编程思想。

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  40 随笔 :: 0 文章 :: 28 评论 :: 0 Trackbacks
1."rich" textarea editor.
前段时间有个霓虹灯的小项目。后台用asp.net给硬件传接口(具体怎样就不清楚了),前台网页让做个可即时变色的textarea editor,把内容传给后台就行了。其实如果不要求即时变色的话,自定义个命名规则就行了。
没办法只能上网搜。先试了document.selection,可惜只支持IE而且bug不少(比如不能隔行操作)。后来搜到了一些开源的editor,人家用纯js写的小框架,真是牛。
自己也用iframe写了个简单的,一般功能是没问题了:

程序目录结构
img
  
***.gif
js
  common.js
iframe.html
test.html

test.html
 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 2    "http://www.w3.org/TR/html4/loose.dtd">
 3 <html>
 4 <head>    
 5     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 6     <style type="text/css"> 
 7         img{cursor:pointer;}
 8         .class1{
 9         border:solid 1px;
10         width:600px;
11         height:400px;   
12         }
13     </style> 
14     <script type="text/javascript" src="js/common.js"></script>
15     <title>iframe editor</title>
16 </head>
17 <body onload="init()">
18 <form id="form1">
19     
20     <div style="width:600px">
21         <div align=right style="float:right;">
22             <img src="img/1.gif" onclick="chgFont()" title="Change Font!" />
23             <img src="img/2.gif" onclick="addIMG()" title="Add Image!" />
24             
25         </div> 
26     </div>    
27         
28     <iframe src="iframe.html" id="editor" class="class1"></iframe>  
29     
30     <div style="width:600px" align=right>
31         <input type="button" id="button1" value="Get Editor Value" onclick="getDocValue()" />
32     </div>     
33 
34 </form>
35 </body>
36 </html>

iframe.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2    "http://www.w3.org/TR/html4/loose.dtd">
3 <html>
4 <head>
5     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
6 </head>  
7 <body>Hello World! 啊啊</body>
8 </html>

common.js
 1 function $(tagid){
 2    return document.getElementById(tagid);
 3 }
 4 
 5 function getDocValue(){
 6     alert($("editor").contentWindow.document.body.innerHTML);    
 7 }
 8 
 9 function init(){
10     var win = $("editor").contentWindow;
11     win.document.designMode= "on";
12     win.document.contentEditable = true;
13     win.focus();    
14 }
15 
16 function chgFont() {
17     var win=$("editor").contentWindow;
18     win.document.execCommand("ForeColor",false,"red");
19     win.document.execCommand("FontSize",false,"10");
20     win.focus();
21 }
22 
23 function addIMG() {
24     var win=$("editor").contentWindow;
25     win.document.execCommand("InsertImage",false,"img/a.gif");
26     win.focus();
27 
注:document.execCommand可以改变很多样式,详情请参照手册:)

2.Advertisement Board.
在CSDN看到的项目投标的广告滚动条,用的是iframe + window.scrollBy,挺有意思的。
自己把源码做了点改进,并加了个暂停滚动的功能:

test.html
 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 2    "http://www.w3.org/TR/html4/loose.dtd">
 3 <html>
 4 <head>    
 5     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 6     <title>iframe scroll</title>
 7     <style type="text/css">
 8         iframe{margin: 0pt; width: 180px; height: 32px;}
 9     </style>
10 </head>
11 <body>
12 <form id="form1">
13     <h4>Exciting Advertisement Board</h4>
14     <iframe src="iframe.html" scrolling="no" frameborder="1"></iframe>
15 
16 </form>
17 </body>
18 </html>

iframe.html
 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 2    "http://www.w3.org/TR/html4/loose.dtd">
 3 <html>
 4 <head>
 5     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 6     <style type="text/css">
 7         *{margin:0;padding:0;}
 8         body {background:#F2F2FC;font:normal 12px verdana,sans-serif;}
 9         ul{list-style-type:none;}
10         li{width:180px;}
11         a{color:#03C;text-decoration:none;}
12         a:hover{color:#F00;text-decoration:none;}
13     </style>     
14 </head>
15 <body>
16     <ul id="scrollCon" onmouseover="suspend()" onmouseout="resume()">        
17         <li>Hello!</li>
18         <li><href="aaa">I'm aaa.</a></li>
19         
20         <li>Hi!</li>
21         <li><href="bbb">I'm bbb.</a></li>
22         
23         <li>How are you!</li>
24         <li><href="ccc">I'm ccc.</a></li>
25     </ul>
26 
27     <script language="javascript">
28         var con=document.getElementById("scrollCon");
29         var items=con.getElementsByTagName("li");
30         var item_count=items.length/2;
31         var line_height=items[0].offsetHeight;
32         var timer1,timer2;
33         var step=0,cstep=0;
34         var isPlayed=false;
35 
36         function startScroll(){
37             timer1=setInterval("doScroll()",40);//数值越大,滚动越慢
38         }
39         function doScroll(){            
40             window.scrollBy(0,2);//滚动幅度
41             step++;
42             if(step>=line_height) {
43                 clearInterval(timer1);
44                 step=0;
45                 cstep++;
46                 if(cstep>=item_count){
47                     cstep=0;
48                     window.scrollTo(0,0);
49                 }
50             }
51         }
52         function start(){
53             if(isPlayed)return;
54             isPlayed=true;                        
55             timer2=setInterval("startScroll()",3000);//滚动间隔
56         }
57         function suspend(){
58             clearInterval(timer1);
59             clearInterval(timer2);
60         }        
61         function resume(){
62             timer2=setInterval("startScroll()",3000);
63         }
64         function stop(){
65             isPlayed=false;
66             clearInterval(timer2);
67         }
68         
69         start();
70     </script>
71 </body>
72 </html>

posted on 2008-08-25 18:46 Atea 阅读(2727) 评论(0)  编辑  收藏 所属分类: Javascript

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问