Liny_@NotePad

沉迷ACG中

FireFox 使用JS修改状态栏。。

嗯(⊙_⊙) 同学发来的一段js,在firefox下面修改不了状态栏,tt和ie完好?

  1.     <script type="text/javascript">
  2.        alert("这是一个JavaScript程序");
  3.        window.status="欢迎来到JavaScript的世界";
  4.     </script>

百度说ff默认不支持。。请大家点击工具-选项-内容,在启用JS后面的高级选项中,勾选修改状态栏内容 即可~

jQuery插件:suggest

使input框自动提示的插件……

主页:http://www.vulgarisoip.com/2007/08/06/jquerysuggest-11/

直接在需要让你的input自动提示的页面导入js即可~

jQuery插件:tablesorter

一个可以将thead中的th当成排序项,将tbody中的td排序的插件……而且支持多列排序~

主页:http://tablesorter.com/

Demo都写得很清晰了~ 有几个小用法记一下……:

  1. $("#list").tablesorter( {
  2.         widgets: ['zebra'],
  3.         headers: {
  4.                0:{sorter: false},
  5.                4:{sorter: false}
  6.         }
  7. } );

widgets为zebra时表示斑马线,即表格会出现交错背景色效果。
headers里面0表示第1行,sorter:false表示该行不参与排列。

还有很多用法,没用到就先不研究啦 > <

ajax请求时读缓存的问题

当url一样时ajax就会读取缓存中的值 真囧。

百度说,在url中加上一个随机值即可。试了一下用时间,果然OK~

$.getJSON("ManageClazz!getFreeRoomList.action?startdate=" + startdate + "&datetime=" + (new Date()).getTime(), null, function(data){
                       alert(data);
});

还有数学的Math.random()也可以产生随机数……

EXT.Window大小随机变化问题解决

晚上突然各个窗体打开大小不正常,最后发现是早上刚加上的stateManager的关系,
窗体读取缓存中的大小显示,囧。

最后百度到解决方案,
定义它的stateful属性为false即不被stateManager管理~

EXT 状态保存

在EXT.onReady中设置

Ext.state.Manager.setProvider(new Ext.state.CookieProvider());

不知道是啥 也许是监听器的意思吧 = =
CookieProvider表示它是根据Cookies有效期限保存的么???

然后在你的类里加上

this.stateEvents = ['tabchange']
this.getState = function() {return{tab:this.getActiveTab().id}}
this.applyState = function(state) {this.setActiveTab(state.tab);}

stateEvents表示状态事件(数组)。
这里只用了一个切换tab的。
getState方法中可以写切换tab时执行的内容,比如保存……这里没有写。
applyState貌似可以隐式调用 就不测试了

详细请搜索下EXT 状态保存。

JavaScript 页面打印和预览

1. 页面打印

window.print()

2. 页面局部打印
在之前的基础上,加上

<style type="text/css" media=print>
.noprint{display : none }
</style>

定义,表示class为noprint的代码在打印将不被显示。
之后将不需要打印的内容放入class为print的容器中即可。

3. 通过IE组件 WebBrowser 实现打印
首先获得控件

<object ID='WebBrowser' WIDTH=0 HEIGHT=0 CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'></object>

之后调用相应功能:

WebBrowser1.ExecWB(6,1);  // 打印
WebBrowser1.ExecWB(7,1);  // 打印预览
WebBrowser1.ExecWB(8,1);  // 打印设置

其他百度来的

WebBrowser.ExecWB(1,1) 打开
Web.ExecWB(2,1) 关闭现在所有的IE窗口,并打开一个新窗口
Web.ExecWB(4,1) 保存网页
Web.ExecWB(6,1) 打印
Web.ExecWB(7,1) 打印预览
Web.ExecWB(8,1) 打印页面设置
Web.ExecWB(10,1) 查看页面属性
Web.ExecWB(15,1) 好像是撤销,有待确认
Web.ExecWB(17,1) 全选
Web.ExecWB(22,1) 刷新
Web.ExecWB(45,1) 关闭窗体无提示

 不打印的方法同2。

4. 还是JS,这次是选中部分打印。
百度来的:

function preview(oper) {
      if (oper < 10){
          bdhtml=window.document.body.innerHTML;//获取当前页的html代码
            sprnstr="<!--startprint"+oper+"-->";//设置打印开始区域
            eprnstr="<!--endprint"+oper+"-->";//设置打印结束区域
            prnhtml=bdhtml.substring(bdhtml.indexOf(sprnstr)+18); //从开始代码向后取html

            prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));//从结束代码向前取html
            window.document.body.innerHTML=prnhtml;
            window.print();
            window.document.body.innerHTML=bdhtml;
      } else {
            window.print();
      }
}

而要打印的内容放在<!--startprint1-->和<!--endprint1-->之间即可。调用preview(1),
这样可以设定多个部分打印不同内容,oper值自己根据需要指定。

使用DWR添加行中列表

 rt……想不出什么方法,我在列表显示的col那里return列表ID,之后的列里才调用增加option及设置默认选项的方法。

  1. function loadPhotoList(){
  2.         photoManager.getPhotoList(displayPhotoList);
  3. }
  4.  
  5. function displayPhotoList(photoList){
  6.         DWRUtil.removeAllRows("PhotoListTable");
  7.         var photo = photoList;
  8.         DWRUtil.addRows("PhotoListTable",photo,[
  9.                 function(photo){return "<select name='albumid" + photo.imgID + "'></select>";},
  10.                 function(photo){
  11.                                                 displayAlbumList(photo.imgID, photo.albumID); // here
  12.                                                 return "<center>" +
  13.                                                                 "<input type='button' value='修改' onclick='editPhoto(" + photo.imgID + ")'>" +
  14.                                                                 "&nbsp;&nbsp;" +
  15.                                                                 "<input type='button' value='删除' onclick='deletePhoto(" + photo.imgID + ")'>" +
  16.                                                                 "</center>";
  17.                                                 }
  18.         ]);
  19. }
  20.  
  21. function displayAlbumList(imgid, albumid){
  22.         albumManager.getAlbumList(function(albumList){ 
  23.                 DWRUtil.removeAllOptions("albumid" + imgid);
  24.                 DWRUtil.addOptions("albumid" + imgid,albumList, "id", "title");
  25.                 DWRUtil.setValue("albumid" + imgid, albumid);
  26.         });
  27. }