<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Natural

     

    利用js實現(xiàn)仿google的個性化定制

    最近需要實現(xiàn)一個仿google的個性化定制;既對窗口的模塊可以拖放,創(chuàng)建新的窗口模塊。。。
    網(wǎng)上實現(xiàn)窗口拖放效果的例子也有不少。
    本人找個了個baseball的例子,利用它的拖放框架增加了創(chuàng)建新窗口的動態(tài)模塊,拖放后的窗口位置的保存功能……
    即讀取到顯示的box模塊的id、位置、resultId(前臺頁面異步顯示時返回結果的div的id);對新建的box則需要讀取box的id、標題、位置、resultId、定制的模塊(下拉菜單選中的值)。。
    只需把這兩個返回的字符串提交給后臺處理,保存的數(shù)據(jù)庫即可。。。前臺顯示數(shù)據(jù)時直接讀取數(shù)據(jù)庫中的信息、利用ajax異步載入到頁面即可。
    記錄一下以備后用。
    這是html中所引用的js文件

      1 <html>
      2 <head>
      3 <title></title>
      4 <style>
      5 body{ padding:0; margin:0;}
      6 .box{border:1px dashed #ccc; margin-bottom:8px; overflow:hidden; height:100%; clear:both;font-size:12px; }
      7 .box p{ padding:5px; margin:0;}
      8 .box .basebat{ margin:0; padding:5px; background:#e1e1e1;font-size:12px; color:#333333; background:#f1f1f1; border-bottom:1px dashed #ccc;cursor:move; }
      9 .box .basebat .f_r{ float:right; cursor:pointer; font-weight:normal;}
     10 .warp{ width:820px; margin:0 auto;font-size:12px;}
     11 #left{ width:200px; float:left;}
     12 #center{ width:400px;margin-left:10px;float:left;}
     13 #right{ width:200px; float:right;}
     14 </style>
     15 <script type="text/javascript" src="jquery-1.3.2.min.js"></script>
     16 <script type="text/javascript" src="popbaseball.min.js"></script>
     17 <script type="text/javascript" src="prototype.js"></script>
     18
     19 <script type="text/javascript">
     20 function dragDiv()
     21 {
     22     jQuery(document).ready(function(){
     23         jQuery.baseball({
     24             accepter:"#left,#center,#right",
     25             target:".box",    
     26             handle:".basebat"
     27             })
     28     })
     29 }
     30 
     31 //保存box的布局
     32 function saveDivs(){
     33     var objdoc = document.getElementsByTagName("h1");
     34      var divsNames = '';
     35       for(i=0;i<objdoc.length;i++)
     36       {
     37           if(objdoc[i].className == "basebat"&&objdoc[i].parentNode.style.display=="")
     38         {
     39             divsNames += objdoc[i].parentNode.id + '-';
     40             divsNames += objdoc[i].parentNode.parentNode.id+ '-';
     41             divsNames += objdoc[i].nextSibling.id+'|';
     42         }
     43       }
     44       alert(divsNames);
     45 }
     46 
     47 //保存新增的box
     48 function saveNewBoxs(){
     49     var objdoc = document.getElementsByTagName("h1");
     50      var divsNames = '';
     51 
     52       for(i=0;i<objdoc.length;i++
     53       {
     54           if( objdoc[i].className == "basebat"
     55               &&objdoc[i].parentNode.style.display==""
     56               &&objdoc[i].childNodes.length == 2                //新增box里標題欄里有兩個節(jié)點
     57               &&objdoc[i].nextSibling.childNodes.length >3     //新增box的內(nèi)容里有4個節(jié)點;大于3可以甄選出新增的box
     58           )
     59         {
     60             divsNames += objdoc[i].parentNode.id + '-';        //新增box的id
     61             divsNames += objdoc[i].nextSibling.id+'-';        //新增box的用于ajax返回result的id
     62             
     63             var subNodes = objdoc[i].nextSibling.childNodes;
     64             //獲取box的標題
     65             for(var j=0;j< subNodes.length;j++)
     66             {
     67                 var field = subNodes;
     68                 var fieldType = field[j].nodeName.toLowerCase();
     69                 if(fieldType=="input")
     70                 {  
     71                     divsNames += field[j].value +'-';
     72                   }
     73              }
     74              //獲取box下拉菜單的選中項
     75              for(var j=0;j< subNodes.length;j++)
     76             {
     77                 var field = subNodes;
     78                 var fieldType = field[j].nodeName.toLowerCase();
     79                   if(fieldType=="select")
     80                 {  
     81                     divsNames += field[j].value +'|';
     82                   }
     83              }
     84         }
     85       }
     86       alert(divsNames);
     87 }
     88 
     89 //隱藏或顯示box
     90 function switchDivState(d){
     91     var Objdoc_ = $(d+'_');
     92     if(Objdoc_.checked){
     93         var Objdoc = $(d);
     94          Objdoc.style.display="";  
     95     }else{
     96          var Objdoc = $(d);
     97          Objdoc.style.display="none";  
     98     }
     99 }
    100 //隱藏box
    101 function closeDiv(d){
    102     var Objdoc_ = $(d+'_');
    103     Objdoc_.checked="";
    104     var Objdoc = $(d);
    105     Objdoc.style.display="none";
    106 }
    107 //關閉box——關了之后無法再重新顯示
    108 function justCloseDiv(d){
    109     var Objdoc =$(d);
    110     Objdoc.style.display="none";
    111 }
    112 
    113 //編輯box的標題
    114 function editDivTitle(titleId,obj)
    115 {
    116     $(titleId).innerHTML=obj.value;
    117 }
    118 
    119 //box的編輯欄
    120 function editDiv(divId,resultId)
    121 {
    122     var divTitle = 'title' + Math.random();
    123     var defaultTitleName = "new title";
    124     var defText1 = "編輯標題:";
    125     
    126     $(divId).innerHTML = "<h1 class=\"basebat\"><span class=\"f_r\" onclick=\"JavaScript:justCloseDiv(\'"+divId+"\')\">關閉</span><div id=\""+divTitle+"\">"+defaultTitleName+"</div></h1><div id=\""+resultId+"\">"
    127     +defText1+"<input class=\"text\" type=\"text\" onkeyup=\"editDivTitle(\'"+divTitle+"\',this)\" value=\""+defaultTitleName+"\"/>"
    128     +"內(nèi)容:<select ><option value=\"\" selected></option><option value=\"0\">使用中</option><option value=\"1\">廢棄</option></select>"
    129     +"</div>";
    130     
    131     dragDiv();
    132 }
    133 
    134 //增加一個box
    135 function addNewDiv()
    136 {
    137     var thisDiv = $("center");
    138     
    139     var newDivIdName = 'div'+Math.random();
    140     var resultDivIdName = 'result'+Math.random();
    141     var newDiv = document.createElement("div");
    142     newDiv.setAttribute("id",newDivIdName);
    143     newDiv.setAttribute("class","box");
    144     
    145     thisDiv.appendChild(newDiv);
    146     
    147     $(newDivIdName).innerHTML= "<h1 class=\"basebat\">new title<span class=\"f_r\" onclick=\"JavaScript:justCloseDiv(\'"+newDivIdName+"\')\">關閉</span><span class=\"f_r\" onclick=\"JavaScript:editDiv(\'"+newDivIdName+"\',\'"+resultDivIdName+"\')\">編輯</span></h1><div id=\""+resultDivIdName+"\"></div>";
    148     
    149     dragDiv();
    150 }
    151 
    152 /**
    153 *ajax的異步載入
    154 */
    155 var loaded = '0';//載入結束標志
    156 function getDivContent(myUrl,myParas,myResult)
    157 {
    158   var request_url= myUrl;                                               // 請求url
    159   var request_pars = myParas+'&fresh=Math.random()';                    // 請求參數(shù)
    160   var request_method = 'get';                                           // 請求方法
    161   var myAjax = new Ajax.Updater(myResult, request_url,{
    162                                   method     : request_method, 
    163                                   parameters : request_pars, 
    164                                   onFailure  : reportError,
    165                                   onLoading  : loading,
    166                                   onComplete : done,
    167                                   evalScripts: true //允許執(zhí)行返回內(nèi)容中的腳本代碼
    168                                   
    169   });
    170 }
    171 
    172 function loading()
    173 {
    174     $('loading').style.display = 'block';
    175     if(loaded == '1')
    176         $('loading').style.display = 'none';
    177 }
    178 
    179 function done()
    180 {
    181     $('loading').style.display = 'none';
    182     loaded = '1';//載入結束
    183 }
    184 
    185     
    186 function reportError()
    187 {
    188   alert('Sorry. There was an error.');
    189 }
    190 </script>
    191 </head>
    192 <body onload="dragDiv()">
    193 <div class="warp" style="border:1px solid #e1e1e1; width:818px; margin-top:8px;">
    194     <div style=" padding:6px 10px;margin-bottom:8px; background:#f1f1f1; border-bottom:1px solid #e1e1e1;">首頁模塊管理</div>
    195     <div style=" padding:10px;">
    196     <input name="aa_" id="aa_" type="checkbox" value="TEST" checked="checked" onclick="JavaScript:switchDivState('aa')"/>  天氣預報 
    197     <input name="bb_" id="bb_" type="checkbox" value="" checked="checked" onclick="JavaScript:switchDivState('bb')"/>  搜索
    198     <input name="cc_" id="cc_" type="checkbox" value="" checked="checked" onclick="JavaScript:switchDivState('cc')"/>  boxC 
    199     <input name="dd_" id="dd_" type="checkbox" value="" checked="checked" onclick="JavaScript:switchDivState('dd')" /> boxD
    200    <input name="save"  type="button" value="ajax" 
    201    onclick="getDivContent('myWeather.jsp','','resultWeather');getDivContent('dmyGoogle.jsp','','resultGoogle')"/> 
    202    <input name="save"  type="button" value="保存布局"  onclick="saveDivs();saveNewBoxs()"/> 
    203    <input name="newDiv"  type="button" onclick="addNewDiv();" value="NEW DIV"/>
    204    
    205   </div>
    206   <div style=" padding:10px;" id="loading" class="loading">載入中……</div>
    207 </div>
    208 <div style=" border-bottom:4px solid #e1e1e1; clear:both; height:14px; margin-bottom:14px; font-size:0;"></div>
    209 <div class="warp">
    210     <div id="left">
    211         <div class="box" id="aa"><h1 class="basebat">天氣預報<span class="f_r" onclick="JavaScript:closeDiv('aa')">關閉</span></h1><div id="resultWeather"></div></div>
    212         <div class="box" id="bb"><h1 class="basebat">搜索<span class="f_r" onclick="JavaScript:closeDiv('bb')">關閉</span></h1><div id="resultGoogle"></div></div>
    213     </div>
    214     
    215     <div id="center">
    216         <div class="box" id="cc"><h1 class="basebat"><span class="f_r" onclick="JavaScript:closeDiv('cc')">關閉</span>boxC</h1><div id="resultCc"></div></div>
    217     </div>
    218     
    219     <div id="right">
    220         <div class="box" id="dd"><h1 class="basebat"><span class="f_r" onclick="JavaScript:closeDiv('dd')">關閉</span>boxD</h1><div id="resultCc"></div></div>
    221     </div>
    222 </body>
    223 
    224 </html>
    225 



    posted on 2010-03-31 21:45 此號已被刪 閱讀(1017) 評論(1)  編輯  收藏 所屬分類: J2EEJavaScript

    評論

    # re: 利用js實現(xiàn)仿google的個性化定制[未登錄] 2010-09-14 11:10 han

    多謝分享,不過建議樓主換個高亮代碼插件,這個都沒有復制哦。  回復  更多評論   

    導航

    統(tǒng)計

    常用鏈接

    留言簿(8)

    隨筆分類(83)

    隨筆檔案(78)

    文章檔案(2)

    相冊

    收藏夾(7)

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产亚洲午夜高清国产拍精品| 国产日本亚洲一区二区三区| 久久久久av无码免费网 | 日本成年免费网站| 美女视频黄.免费网址| 久久精品亚洲一区二区三区浴池 | 国产成人免费爽爽爽视频| 2022国内精品免费福利视频| 亚洲H在线播放在线观看H| 一本久久a久久精品亚洲| 天堂在线免费观看中文版| 免费国产污网站在线观看15| 日韩精品免费一线在线观看| 亚洲高清一区二区三区| 亚洲免费视频网站| 久久久久亚洲AV综合波多野结衣| 一区二区三区亚洲视频| 成人a视频片在线观看免费| 扒开双腿猛进入爽爽免费视频| 免费人成视频在线观看网站| 99在线观看精品免费99| 久视频精品免费观看99| 日韩免费观看一区| 中国极品美軳免费观看| 理论秋霞在线看免费| 九九免费精品视频在这里| 亚洲国产成人久久综合| 在线综合亚洲中文精品| 亚洲乱理伦片在线观看中字| 精品日韩99亚洲的在线发布| 亚洲色最新高清av网站| 亚洲最大福利视频| 含羞草国产亚洲精品岁国产精品| 亚洲综合激情五月色一区| 亚洲AV电影天堂男人的天堂| 亚洲成aⅴ人片久青草影院按摩 | 亚洲成AV人在线播放无码| 久久久久亚洲av毛片大| 伊人久久综在合线亚洲2019| 亚洲狠狠成人综合网| 搜日本一区二区三区免费高清视频 |