工作笔记(2017.08.24)

来源:互联网 发布:weui js 编辑:程序博客网 时间:2024/05/18 03:05

一 showModelDialog()、open()以及frameset、iframe打开新的页面,父页面和子页面的值的传递

(一)showModelDialog的一些特性

 showModelDialog()是IE的东西,现在在chrome和高版本的IE上兼容性都不好,但是opener是所有主流浏览器都支持的

showModelDialog()是模态窗口,有两层含义:

(1)在窗口未关闭前,只有这个窗口获得焦点

(2)在调用showModelDialog()的函数中,如果窗口没有关闭的话,下面的语句不能执行

例如:

var returnValue  = showModelDialog(url);

var a = 1;

在打开的窗口没有关闭之前,var a = 1是不能执行的

(二)父页面和子页面之间的传递参数和返回值

1 showModelDialog():

传递参数:函数的参数中有args参数;

返回值用window.returnValue,这是它自带的

2 open:

传递参数:window.opener.param 注意这个param一定是父页面的全局参数 ;

返回值:opener方式的话,有一点点麻烦,通常的做法是:在关闭窗口的事件中调用父页面中的变量进行赋值或者调用父页面中的方法(注意:opener方式执行的时候,不会等你返回值,而是一直往下面执行,所以很重要一点是,在页面关闭的时候,显示的功能也要写在那里)

3 iframe和frameset:

传递参数:window.parent;

返回值:没有,可以通过contentWindow来获取子页面的一切。

4 opener打开一个窗口,然后这个窗口里面是一个frameset: window.parent.opener.param 

5 注意:不要被表面的窗口的形式迷惑,我们只需要关心数据的获取、数据的传递和数据的显示。


二 工厂模式
(一)工厂模式:
1 factory已经创建好了对象
2 在需要用的地方:通过一个名字,到factory中去取出来。
(二)抽象工厂模式:
1 AbstractFactory中创建好了不同的factory(houseFactory carFactory)
2 先通过一个factory名字去AbstractFactory中拿到不同的factory
3 再通过bean(object)名字去factory中拿到不同的bean(object)


三 服务定位器模式再理解:

1 通过名称拿到服务(不同系统)

2 通过名称在服务中拿到不同的service(bean)

如果还要在服务(不同系统)上再加一层,比如:一个系统的分类(教育 娱乐),怎么做呢。

其实很简单,再在外面包一层,先通过名称拿到分类,然后再重复之前的操作。

所以本质上就是一个层次包含关系的模型,最好的实现方式是:服务定位器模式。


四 java中的继承和接口,什么时候用继承什么时候用接口,这是我自己的理解:

继承:公用但是比较少改变的部分;

接口:公用但是变化多端的东西,子类个性化比较多。


五 HTTP

1 Socket封装了http协议的实现,相当于http协议的接口
2 从Socket中创建IO
3 用IO来创建request和response对象





小的知识点:

1 readonly的值只有一个:readonly  
以下几种写法都是只读: readyonly   readonly=   readonly=“XXX”(任意字符串)
js改变readonly document.getElementById("input").readOnly = true/false;(注意大小写)

2 element.style 中带有 -的属性的写法:

borderRight只能这样写(border-right borderRight都会报错)
col.style.borderRight = "1px solid #e4e4e4";

3为什么不同编码之间会出现乱码?本质原因是:计算机只能识别二进制数,因此所有的符号都对应着一个二进制数。但是不同地区对应着不同的对应规则,这个规则称之为编码规则。不同的编码规则造成了乱码,所以要使用同一的编码。
举例说明:
如果:UTF-8中1111 1010表示的是A;GBK中1111 1010表示的B
现在我的eclipse中的编码默认为UTF-8  当我输出A到前端jsp里面,首先A转换成1111 1010,然后到了前端JSP,前端JSP读取到1111 1010,但是不幸的是前端jsp采用的是GBK编码,解析1111 1010后得到了B。

4 (1)注意一点:这里的jsonstr就是string类型,用typeof(jsonstr)就是string,所以用string类型的push方法创建json数据

var jsonstr="[{'name':'a','value':1},{'name':'b','value':2}]";
var arr  =
     {
         "name" : $('#names').val(),
         "value" : $('#values').val()
     }
jsonarray.push(arr);

(2)同样这里的json是对象,所以能动态添加属性

var json={};// 定义一个json对象
 json.array1=["2","4"];// 增加一个新属性,此属性是数组
 json.array1[json.array1.length]='6';// 数组追加一个元素
 alert(json.array1)

水平排列块级元素:

(1)元素变化成 display:inline 行内元素

(2)加上float

(3)float元素的特点:假如在一行之上只有极少的空间可供浮动元素,那么这个元素会跳至下一行,这个过程会持续到某一行拥有足够的空间为止。打个比方:float就是有空子就钻

由于第一行宽度比较宽,float就直接在第一行,修改第一行的宽度后就float到第二行了。

6 ajax提交表单和用表单提交表单: 

f.submit(),后台获取表单:request.getParameterValues("")

ajax提交,只要将表单序列化就行,data:$('#scheduleForm').serialize(),

7 java中的日期类:Calendar和Date(都是如下规律:)

(1)年份:准确
(2)月份:0-11
(3)日期:准确
(4)星期数:1-7  星期天-星期一

8 table百分比的计算方式:浏览器各有不同
edge:即使是写了百分比,但是如果这个td里面没有内容的话,整个table缩小的时候,只有这个td会被缩小,而且会被缩得尽可能的小。
chrome:就是按照百分比来计算。

滚动条

(1)iframe加上一个scrolling属性,或者overflow:auto/scrolling,那么会在元素的右边或者下边加上一个滚动条,用F12的时候,滚动条在元素内,如果光标移向下一级元素,滚动条会出现在元素外。这就是判断滚动条来自哪个元素的方法
(2)滚条条的长度:根据元素的高度和元素内的高度来计算
(3)滚动条只相对于本元素的下一级元素,下下级元素有多高多宽,那不关我的事情
(4) 滚动条只关于:元素高度和元素子元素的高度,所以要出现滚动条,可以用js来动态加载高度。

10 sql的占位符?的问题,代替占位符?的都会被当做字符串处理,在使用to_date('','')的收to_date被当做字符串处理而不是一个函数,所以会报错:该出现数字的地方没有出现数字。

11

(1)css中的px:大部分是一定要加px的,有一些不加px的是html本身做了处理的。不加上px,html是解析不了的
(2)html中可以加也可以不加上px
(3)IE10这个巨坑,IE10中必须加,例子:
 element.style.top=100  + "px";
 如果不加上后面的px,那么这个top的值为空

原创粉丝点击