javascript css html笔记

$

今天调了下table的tr,如果table的宽度设置1000px,其行下的2列都是设置为100px,其实这两列不是想象中的这么宽,而是变宽了。原因是两列要填满整个table。

$

清除浮动的很好的文章http://www.zhangxinxu.com/wordpress/?p=621

$

1)absolute 脱离文档流,通过 top,bottom,left,right 定位。选取其最近的父级定位元素,当父级 position 为 static 时,absolute元素将以body坐标原点进行定位,可以通过z-index进行层次分级。

2)可以看做position:relative的块,为可独立的块,(看做一块瓷砖)其子元素的绝对定位以他为基点。

3)jquery 整个就是一个匿名函数,可以类比于其他语言的一个类。jquery下边有静态方法,对象方法等。

4)特性页开发效果总结:

scrollTop只有在元素的高度大于窗口高度时才起作用,再就是overflow:hidden可以隐藏滚动条,但是实际高度不会变,用srolltop仍然起作用,但是手动滚动不行了。

scroll(回调函数)函数不是只有滚动条才触发,如果是overflow:hidden,但是scrolltop发生了变化,也会触发触发scroll(function).

5)做特性页时发现,sogou浏览器的ie模式竟然和原生的ie浏览器有些地方不一样。比如在浏览器窗口resize函数触发的时候,函数应该在settimeout中写,才能正确处理。类似行为还有在鼠标中间键点击调用阻止默认行为时。。

$(document).bind('mousedown', function(e) { 
  if( (e.which == 2) ) {
  stopDefaultAndBubble(e);
  //bugfix 搜狗浏览器的ie内核只有在定时器触发这个函数才生效。。
  setTimeout(function(){
  stopDefaultAndBubble(e);
  },10);
}
})

6)浏览器单线程

7)不管页面是什么编码,用ajax传中文都是用的utf-8urlencode,但是如果是form传递则要看该form是什么编码。

 $
关于居中
position: relative;
display: block;
margin: 0 auto;
width: 400px;
上面三句就是通用的水平置中效果
position: absolute 和 position: relative 都有个别的用途
独特 margin: 0px auto 一定要配合 relative 和 width 才有效果
很好的讲了position:relative和absolutel的区别
http://hi.baidu.com/xletian/item/614f5a0d8ad6f7354bc4a346
$
布局为什么一般用div而不是table
frame的优缺点,兼容性不是太好。
主要是布局的一些知识。
知道了布局的div如果在一行,需要用float
居中,用margin:auto.
$
js没有class,js的的函数模拟实现class的功能,使用js的作用域,闭包来减缓全局变量
(function (window) { 
var hello = 'Hello World.'; 
window.$ = { 
sayHello: function () { 
alert(hello); 

}; 
})(window); 
$.sayHello(); //
通过window.$ 这个特别全局变量,给全局代理一个类似于class的变量名。
Sayhello就相当于public方法,hello就相当于私有变量,但是这个私有变量通过$变量的public方法打印出来。
因为函数里面的作用域可以是私有的,所以通过函数来实现某个变量的私有。你们
$
函数中的var是私有变量,外界无法访问。用this就可以访问。
$
Js的模块化编程
为什么js的模块化跟其他语言不一样,因为js没有其他语言类似的类,其他语言通过类的方法就可以调用吧,而js不能像他们那样,通过函数来模拟类下面的方法.因为js有一种闭包性质,这种性质是js内部的函数能操作外部的变量,基于这一点。。不能像其他语言采用(对象名.方法名)
$
自己写例子理解闭包
理解闭包的机制,用例子展示(
Js代码
例子1:
<script type="text/javascript">
var a= 1; 
function aa(){
a=4;
}
aa();
alert(a); 
</script>
例子2:
Python代码:
a=1
def aa():
        a=4(其实这个操作的是在函数内部定义的函数,而不是函数外的a,传递只能通过参数来传递) 在php中只有加上global才可以引用函数外部定义的a
geta()
print a
例子1结果为4,而例子2结果为1
而如果例子2能反映这种修改,就需要用全局变量,就是说其他语言虽然可以读到函数外的变量,但不会做出修改,只是对副本作为修改。
Python的对象外应该不会读到对象外的内容吧
$
闭包理解
1 var name = "window";  
2              
3 function outer(){  
4    var name = 'outer';  
5    function inner(){  
6        return name;  
7    }  
8   return inner;  
9 }  
10  
11 alert(outer()());   

闭包,理解了outer()()
也就是说outer只是返回了一个函数变量,加上(),才是去执行这个函数。。
执行outer()之后,我们获取了刚刚说被暴露在外边的inner函数了,紧接着执行inner(),于是inner就开始找寻name变量了,我们知道inner所在的环境被嵌套了2层,inner->outer->window,当然啦,按照我们就近原则,我们肯定现在inner里边找name变量,发现找不到,于是到outer那个环境去找,此时找到了name,把name返回给inner()调用处alert出来!
这里可以思考一下脚本找寻变量的过程,就可以知道过多地访问全局变量会经常要把时间消耗在搜索过程,所以尽量避免过多地访问全局变量,至于怎么做,比较简单的就是采用一个局部变量记录该全局变量并替换成访问该局部变量)
1.在函数里边定义函数不一定是闭包,而是应该将这个函数返回并且赋值给外界或者给外界执行这个闭包。
因为js解释器要知道到底要不要销毁域底下的东西,如果它发现外界持有这个闭包的引用,它就不会去销毁这个环境。
3.闭包允许外界访问函数里边的局部变量,例如outer里边的name变量。
4.运用闭包可以储存函数里边的变量,可以避免更多的全局变量定义而污染,我觉得可以简单的跟面向对象的封装进行类比。
5.闭包会导致变量跟一些引用停留在内存不被销毁,将会导致内存消
http://rapheal.iteye.com/blog/1142033 
$
Bind,必须在dom元素存在时才绑定成功,否则失败。
我写的渠道后台添加页面的搜索渠道的更新按钮,想绑定一个事件。

<script>
        $(".modify_row").bind("click",function(){
                displayRow($(this));
        });
</script>
Json和数组不一样,的区别
json是这样的{k:v,k1:v1}
数组是这样的[k=v,k1=v1] 
$
所谓"构造函数",其实就是一个普通函数,但是内部使用了this变量。对构造函数使用new运算符,就能生成实例,并且this变量会绑定在实例对象上。 
原来JavaScript中还是有私有变量的,简单的可以理解为:在构造函数中用var关键字定义的变量就是私有变量,私有变量只能在构造函数内部调用。至于那两个下划线只是一般约定规则而已,就像引用类型的第一个字母一般大写而已。

$
回调函数  闭包的理解
闭包可以用在许多地方。它的最大用处有两个,一个是可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。
回调函数可以访问上一级的成员变量sd(或许在FP中称为运行上下文),这个跟java的observer模式中的内部类可以访问容器类的this指针一样,这就是说当你点击div时,原来已经产生的时间变量sd还在,这样打印出来的时间都是旧的时间。这是closure的灵活强大的地方(《JavaScript: The Good Parts》里面说,“使用闭包来进行信息掩藏的方式,它是另一个减少有效全局污染的方法”。真知灼见啊!,否则又要使用大量的全局变量),但是跟Java一样,这里由于引用的关系可能会出现垃圾回收的困难,java用弱引用来处理这个问题
Java最引人争议的问题之一就是,人们认为Java应该包含某种类似指针的机制,以允许回调(callback)。通过回调,对象能够携带一些信息,这些信息允许它在稍后的某个时刻调用初始的对象。稍后将会看到这是一个非常有用的概念。如果回调是通过指针实现的,那么就只能寄希望于程序员不会误用该指针。然而,您应该已经了解到,Java更小心仔细,所以没有在语言中包括指针。
 通过内部类提供闭包的功能是优良的解决方案,它比指针更灵活、更安全。见下例:
avascript这一点c语言很像,还有windows的一些消息机制等等异步操
在java面向对象的语言中,通过对象的引入,然后再调用某个方法就可以实现回调的功能。从这一点来说Javascript更像c
$
语法的最重要的区别不是真正的面向对象。。。
是对象,闭包,和原型继承。
类的实现方式和继承等都和普通语言不一样。。
οnclick="showpic(this); return false;"是什么意思?
<a超链接 触发onclick事件时,会刷新画面,而加上return false;后就会在执行完所有操作之后,不会刷画面了。
通俗一点就是防止刷新画面.
$
javascript执行时,先预编译,再解释执行. 
预编译过程: 
首先为执行环境建立建立一个全局对象,一般客户端脚本为window或global对象。 然后,检查某环境中根代码块中(非函数或{}中)var关键字,把这些变量设置成global对象的属性,并附初值undefined. 
如果过程中遇到直接定义的函数(fun1的定义),那么把fun1设置成global对象的属性,并附初值函数的定义. 
接下来才是解释执行过程,也就是页面上的js的顺序执行过程. 
var hello = function(){...},在解释执行过程才会把函数指针赋值给hello,在它之前hello是undefined. 
而function hello(){...}定义的之所以可以,因为它是在预编译过程中,已经定义了hello这个变量. 
$
1)//如果别的用户也在使用Roo和$,则用_Roo和_$代替
var _Roo = window.Roo,
    _$ = window.$;
2)进入roo方法之后,this所指的对象就是它本身,而不是windowfunction(){
//如果别的用户也在使用Roo和$,则用_Roo和_$代替
var _Roo = window.Roo,
    _$ = window.$;
var Roo = window.Roo = window.$ = function( selector, context ) {
    if(window == this) {
        return new Roo(selector);
    }
    return this.init( selector, context );
};
3)javascript的所有属性都可以用下标值来表示、比如程序中的this[0]与this.0

$
URL编码遵循下列规则: 每对name/value由&;符分开;每对来自表单的name/value由=符分开。如果用户没有输入值给这个name,那么这个name还是出现,只是无值。任何特殊的字符(就是那些不是简单的七位ASCII,如汉字)将以百分符%用十六进制编码,当然也包括象 =,&;,和 % 这些特殊的字符。其实url编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上“%”。比如“\”,它的ascii码是92,92的十六进制是5c,所以“\”的url编码就是%5c。那么汉字的url编码呢?很简单,看例子:“胡”的ascii码是-17670,十六进制是BAFA,url编码是“%BA%FA”。 
百度中查询“中国人”,会将中文URL参数转为Gb2312码的16进制表示,一个中文字用2个字节
http://www.baidu.com/s?wd=%D6%D0%B9%FA%C8%CB
Google中查询“中国人”,会将中文URL参数转为Utf-8编码的16进制表示,一个中文字用3个字节
http://www.google.cn/search?client=opera&rls=en&q=%E4%B8%AD%E5%9B%BD%E4%BA%BA&sourceid=opera&ie=utf-8&oe=utf-8 
$
1)不管页面是什么编码,用ajax传中文都是用的utf-8的urlencode。但是如果是form传递则要看该form是什么编码。
2)apache自动对浏览器传过来的utf-8 encode的中文,先进行decode,然后再转化为我页面使用的gbk编码,apache真够智能的。
3)forum传递参数时,input必须加name属性,否则传递不了,因为浏览器是靠那么属性进行拼接的,比如name=key,value='value',get方式,浏览器就会自动拼接成&key=value&
1)Urlencode编码 URL 字符串URL 编码的作用是把字符转换为可在因特网上安全传输的格式。
在因特网上传送 URL 的话,只能使用 ASCII 字符集。
由于 URL 经常会包含 ASCII 字符集以外的字符,所以必须对 URL 进行转换。URL 编码所做的事情就是把 URL 转换为有效的 ASCII 格式。
在进行 URL 编码时,每一个非安全的 ASCII 字符会被替换为 "%hh" 格式,其中 hh 是两位十六进制数,它对应于该字符在 ISO-8859-1 字符集里的字符编码值。
URL 中不能含有空格,URL 编码通常会将空格替换为加号(+)。


String  urlencode( string $str )
返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)
2)Html特殊字符的的转码
htmlspecialchars_
htmlspecialchars_decode
HTMLSpecialChars重要性
如果不用HTMLSpecialChars,就会导致读取时,要把" <script>"之类的HTML标签“原本”的输出,而这一输出就有漏洞了,如果那个插入数据库的人是黑客,插入的不是一般的字符串,而是 “ <script> <b> <body>”等等之类的东西,读取后,就是一个HTML文档之类的东西,这样,他可以利用这个漏洞欺骗其他人,或者借这个漏洞攻击别人等等,搞个框架跳转到某一网站等等操作。
3)对整体进行html特殊字符的编码。
Htmlentities   Convert all applicable characters to HTML entities 
4)base64编码的意义
原因:URL 编码的作用是把字符转换为可在因特网上安全传输的格式。在因特网上传送 URL 的话,只能使用 ASCII 字符集。所以一些数据如果在url中传输的话,可以进行base64编码。
此编码方式可以让中文字或者图片也能在网络上顺利传输。在 BASE64 编码后的字符串只包含英文字母大小写、阿拉伯数字、加号与反斜线,共 64 个基本字符,不包含其它特殊的字符,因而才取名 BASE64。编码后的字符串比原来的字符串长度再加 1/3 左右。 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值