存档

‘JavaScript’ 分类的存档

Flash中<object>的标签属性

2011年12月7日 没有评论

索引

一、介绍

OBJECT标签是用于windows IE3.0及以后浏览器或者其它支持Activex控件的浏览器。

“classid”和“codebase”属性必须要精确地按上例所示的写法写,它们告诉浏览器自动下载flash player的地址。如果你没有安装过flash player,浏览器会跳出一个提示框访问是否要自动安装flash player。当然,如果你不想让那些没有安装flash player的用户自动下载播放器,或许你可以省略掉这些代码。

EMBED标签是用于Netscape Navigator2.0及以后的浏览器或其它支持Netscape插件的浏览器。“pluginspage”属性告诉浏览器下载flash player的地址,如果还没有安装flash player的话,用户安装完后需要重启浏览器才能正常使用。

为了确保大多数浏览器能正常显示flash,你需要把EMBED标签嵌套放在OBJECT标签内,就如上面代码例子一样。支持Activex控件的浏览器将会忽略OBJECT标签内的EMBED标签。Netscape和使用插件的IE浏览器将只读取EMBED标签而不会识别OBJECT标签。也就是说,如果你省略了EMBED标签,那firefox就不能识别你的flash了。

二、必需属性

width:以百分比或象素指定flash影片的宽度。
height:以百分比或象素指定flash影片的高度。
classid:设置浏览器的Activex控件,仅用于OBJECT标签。
codebase:设置flash Activex控件的位置,因而如果浏览器如果没有安装的话,可以自动下载安装。仅用于OBJECT标签。
movie:指定影片的下载地址。仅用于OBJECT标签。
src:指定影片的下载地址。仅用于EMBED标签。。
pluginspage:设置flash 插件的位置,因而如果浏览器如果没有安装的话,可以自动下载安装。仅用于EMBED标签。

三、可选属性

id:设定变量名,用于脚本代码的引用。仅用于OBJECT
name:设定变量名,用于脚本代码(如javascript)的引用。仅用于EMBED。
play:[true或false]指定flash影片是否在下载完成后就自动播放,如果省略此属性,则默认为true。
loop:[true或false]指定影片播放完最后一帧后是停止还是继续循环播放,如果省略此属性,则默认为true。
menu:[true或false] True 显示全部的菜单,允许用户放大,缩小等控制影片播放等操作;False 显示只包含设置选项和关于flash的菜单。
quality:[low, high, autolow, autohigh, best ]。

  • low:速度优于美观,而且不应用反锯齿;
  • high:美观优于播放速度,而且一直应用反锯齿。如果影片不包含动画,位图会被平滑化;而如果影片包含动画,位图将不变平滑;
  • autolow:刚开始着重于速度,但当需要时随时提升美观;
  • autohigh:同时着重播放速度和美观,但需要时则牺牲美观来保证播放速度;
  • best:提供最好的显示质量而不考虑播放速度。所有输出都应用反锯齿及所有位图都被平滑化。
scale:[showall, noborder, exactfit]

  • showall:默认。影片在指定的区域内显示,但保持原始的比例。影片两侧将会出现边框。
  • noborder:收缩影片以适合指定的区域,保持影片不失真,但部分影片将可能将裁切。然而保持影片的原始比例。
  • exactfit:使整个影片在指定的区域内显示,影片有可能变形失真,而且不保持原始的比例。
align: [l, t, r, b]默认为居中,当浏览器窗口小于影片时,边缘会被裁切。Left,Right,Top,Bottom按照相应的设置沿浏览器的边缘对齐。如果需要,另外三边将被裁切。
salign:[l, t, r, b, tl, tr, bl, br]L,R,T,B 左,右,上,下
TL,TR,BL,BR 左上,右上,左下,右下
wmode:[window, opaque, transparent] 设置flash影片的window mode属性,指定flash在浏览器中的透明,层叠及位置。

  • window:影片在浏览器中自己的矩形窗口内播放
  • opaque:影片隐藏了所有在它后面的内容
  • transparent:使flash影片透明,显示透明影片后面的网页内容。这将会降低动画的性能。而且这个属性不是在所有浏览器中都可用的。
bgcolor:[#RRGGBB, 十六进制RGB值]。指定影片的背景颜色。使用这个属性覆盖flash中设定的背景颜色。
base:设定基准目录或URL,用来解决所以flash中的相对路径。类似网页中的<base>标签。

allowFullScreen

allowFullScreen:[true或false],是否允许用户开启全屏模式,默认为true,开启。
flashVars:传递变量到flash player,需要flash player6及以后的版本。传递root级变量到影片。字符串的格式是用“& ”分隔的name=value集。浏览器支持64kB大小的字符串长度。

四、参考

http://kb2.adobe.com/cps/127/tn_12701.html

五个星期五,五个星期六,和五个星期日真的823年才出现一次?

2011年7月4日 3 条评论

老早之前看过这样的微博。当时写了个JS验证了它的错误。不过,今天又看到有人转,于是翻到那时写的JS,小批一下= =||。

运行下面代码看2009年到2099年发生“五个星期五,五个星期六,五个星期日”的月份

提示:你可以先修改部分代码再运行。

一个tab键切换问题

2010年9月7日 没有评论

最近做注册时,用focus和blur事件出现些问题.
Chrome和Safari在单击表单标签radio上不支持blur(不过用tab切换却支持);
但单击radio后再按tab键.Chrome和safari又不理想了.

如下bug-demo

提示:你可以先修改部分代码再运行。

分类: HTML/CSS, JavaScript 标签:

闭包笔记(一)

2010年5月15日 没有评论

闭包的定义:

所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。

其实每个函数都是闭包.
—————————–以下个人观点(^^如有不妥,请砸砖头)—————
闭包其实是作用域链的一种表现而已^^.
当进入一个函数中时.会创建一个执行环境,其中包括一个调用对象,这个调用对象里包括当前函数里的变量(属性),方法.
函数进行执行里,会根据这个当前调用对象向上进行查找,顶部对象是window对象.
有个要注意:
|———-JavaScript的变量作用域是在定义时被确定而不是在被执行时——–|
看别人的Code例子吧
1

1
2
3
4
5
6
7
8
9
10
11
var name = "The Window";
  var object = {
    name : "My Object",
    getNameFunc : function(){
      return function(){
        return this.name;
      };
    }
 
  };
 alert(object.getNameFunc()());

一个实例里包含了一个属性和一个方法,方法里又返回了一个方法,返回的这个方法里返回一个this引用对象的name属性;
执行的时候是object.getNameFunc()().先执行对象object的公用方法.
然后再执行公用方法里返回的那个匿名函数,这时的作用域会查找this.name.匿名函数里没有定义.找getNameFunc方法,getNameFunc方法里也没有,由于getNameFunc方法是公用方法,再向上查找就是window对象即全局变量.
|———————-this是执行时的上下文对象————————–|

提示:你可以先修改部分代码再运行。

运行后,发现点击都是5;
当badClosureExample函数执行后,badClosureExample里的click的匿名函数的i值已为5,可click事件并没有执行,而i相对click事件的匿名函数是外部变量;
所以解决的方法是让每个i成为click事件的私有属性
不管是

1
2
3
4
5
6
7
8
9
function badClosureExample() {
    for (var i = 0; i < document.getElementsByTagName('a').length; i++) {
        var element = document.getElementsByTagName('a');
        element[i].i = i;
        element[i].onclick = function() {
            alert(this.i);
        };
    }
}

还是

1
2
3
4
5
6
7
8
9
10
11
12
function badClosureExample() {
    for (var i = 0; i < document.getElementsByTagName('a').length; i++) {
        var element = document.getElementsByTagName('a');
        element[i].onclick = new cloS(i);
    }
}
 
function cloS(i) {
    return function() {
        alert(i);
    };
}

其实都是为click的那个匿名函数创造一个作用域保存私有变量.防止它调用它的外部(或者说是父级里的属性);

|————————看看,都是作用域问题^^还得研究ing….————————-|

JavaScript词汇表(Glossary)

2010年4月10日 没有评论

 

ASCII 字符集

美国标准信息交换编码 (ASCII) 的 7 位字符集,它被广泛地用来表示标准的美国键盘上的字母和符号。ASCII 字符集与 ANSI 字符集中的头 128 个字符 (0–127) 完全相同。

Automation 对象

通过 Automation 接口可以被其他应用程序或编程工具使用的对象。

按位比较

对两个数值表达式中相同位置上的位进行的逐位比较。

Boolean 表达式
一个值为 true 或者 false 的表达式。如果需要,非 Boolean 表达式也可以被转换为 Boolean 值,但是要遵循下列规则:

所有的对象都被当作 true。
当且仅当字符串为空时,该字符串被当作 false。
null 和 undefined 被当作 false。
当且仅当数字为零时,该数字被当作 false。

字符编码

用来表示一个集合,诸如 ASCII 字符集,中特定字符的数字。

对象的形式定义。类的作用就相当于一个模板,在运行时可以根据此模板来创建对象的一个实例。类定义对象的各种属性并且定义各种方法以便控制对象的操作。

注释

程序员向代码中添加的文本,用来说明代码是如何工作的。在 JScript 中,一行注释通常以 // 开头。如果要创建多行的注释,请使用 /* 和 */ 定界符。

比较运算符

表示两个或更多的表达式或值之间关系的字符或符号。这些运算符包括小于 (<)、小于或等于 (<=)、大于 (>)、大于或等于 (>=)、不等 (!=) 和等于 (==)。

复合语句

用大括号 ({}) 括起来的语句序列。复合语句可以被用来在需要使用单行语句的地方完成多项任务。

构造函数

一种 JScript 函数,具有两个特殊的性质:

由 new 运算符来调用此函数。
通过 this 关键字将新创建对象的地址传递到此函数。
请使用构造函数来初始化新的对象。

表达式

关键字、运算符、变量以及文字的组合,用来生成字符串、数字或对象。一个表达式可以完成计算、处理字符、调用函数、或者验证数据等操作。

固有对象

固有对象是作为标准 JScript 语言一部分的一种对象。所有的脚本都可以使用这种对象。JScript 中的固有对象包括 Array,Boolean,Date, Function,Global,Math,Number,Object,RegExp,Regular Expression,和 String。

本地时间

本地时间指的是脚本被执行的服务器或客户机上的时间。

区域设置

对应于给定语言或国家/地区的一系列信息。区域设置影响预定义编程术语所使用的语言并影响一些跟区域设置相关的设置。在下面两种情况下区域设置信息很重要:

代码区域设置影响术语,诸如关键字,所使用的语言并定义与区域设置相关的设置,诸如十进制分隔符和列表分隔符、日期格式、和字符排序的顺序等。
系统区域设置影响一些与区域设置相关的功能的执行方式,例如,显示数字或将字符串转换为日期等。可以在操作系统所提供的“控制面板”实用程序中调整系统“区域选项”的设置。

null

null 值指出一个变量中没有包含有效的数据。产生 null 的原因是:

对一个变量显式地赋值为 null。
包含 null 的表达式之间的任何操作。

数值表达式

数值表达式指的是任何值为数字的表达式。这种表达式的元素可以包括关键字、变量、文字和运算符的任意组合,只要此组合能够生成一个数字。在特定的情况下,如果可以的话,字符串也可以被转换为数字。

基本

一种数据类型,是 JScript 语言的一部分并通过值来进行操作。在 JScript 中,数字、Boolean、字符串和函数等数据类型都被看成 primitive。而对象和数组则不是基本数据类型。

属性

对象的一种命名的特性。属性定义了对象的一些特性,诸如大小、颜色和屏幕位置,或对象的状态,诸如可用的或禁止的。

运行时错误

代码运行过程中出现的错误。如果一条语句试图进行非法操作,那么就会导致一个运行时错误。

范围

定义一个变量、过程或对象的可见性。在函数中定义的变量仅在函数内部可见,在调用该函数时并不能保持其值。

字符串比较

两个字符序列之间的比较。除非在进行比较操作的函数中指出,所有的字符串比较操作都是二进制的。在英语中,二进制比较区分大小写;而文本比较则不区分。

字符串表达式

任何值为一个连续字符序列的表达式。一个字符串表达式的元素可以包括返回字符串的函数,字符串文字,String 对象,或者字符串变量。

未定义

在变量被创建之后和被赋给值之前分配给该变量的一个特殊值。

全球标准时间 (UTC)

全球标准时间指的是由世界时间标准设定的时间。原先也被称为格林威治标准时间或者 GMT。

用户定义对象

由用户在源代码中创建的对象。

变量

用于按名称来保存并操作值的位置。因为 JScript 的类型是自由的,在一个脚本过程中,单个变量可以保存不同的数据类型。

包装器

一种对象,被创建来为一些其他类型数据提供对象风格的接口。Number 和 Boolean 对象就是包装器对象的例子。

分类: HTML/CSS, JavaScript 标签:

Object.prototype.toString

2010年3月3日 没有评论

提示:你可以先修改部分代码再运行。

toString 方法是所有内建的 JScript 对象的成员。它的操作依赖于对象的类型:

Array 将 Array 的元素转换为字符串。结果字符串由逗号分隔,且连接起来。
Boolean 如果 Boolean 值是 true,则返回 “true”。否则,返回 “false”。
Date 返回日期的文字表示法。
Error 返回一个包含相关错误消息的字符串。
Function 返回如下格式的字符串,其中 functionname 是被调用 toString 方法函数的名称:
function functionname( ) { [native code] }
Number 返回数字的文字表示。
String 返回 String 对象的值。
默认 返回 “[object objectname]”,其中 objectname 是对象类型的名称。

分类: JavaScript 标签:

让IE也支持HTMLElement

2009年12月29日 没有评论

今天看<精通JavaScritp>PDF电子书DOM的一章,其中讲了很多查找结点,操作结点的方法,刚开始是几个查找结点的方法,前一个结点,后一个结点,第一个子结点,最后一个子结点.父级结点;分别是

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//前一个结点
function prev(elem) {
    do {
        elem = elem.previousSibling;
    } while ( elem && elem . nodeType != 1 );
    return elem;
}
//后一个结点
function next(elem) {
    do {
        elem = elem.nextSibling;
    } while ( elem && elem . nodeType != 1 );
    return elem;
}
//第一个子结点
function first(elem) {
    do {
        elem = elem.firstChild;
    } while ( elem && elem . nodeType != 1 );
    return elem;
}
//父级元素结点
function parent(elem, num) {
    num = num || 1;
    for (var i = 0; i < num; i++) {
        if (elem != null) elem = elem.parentNode;
        return elem;
    }
}

例子:

提示:你可以先修改部分代码再运行。

不过这样的代码并不优美.
在FF和Opera中存在一个强大的对象原型叫做HTMLElement,它允许你为每一个HTMLDOM元素绑定函数和数据.

1
2
3
4
5
6
7
8
9
<script type="text/javascript">
HTMLElement.prototype.next=function(){
var elem=this;
do{
elem=elem.nextSibling;
}while(elem && elem.nodeType!=1);
return elem;}
alert(document.getElementsByTagName('div')[0].next().nodeName);
</script>

不过IE并不支持它.所以自己得创造;
设置一个dom的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
var domMethod = {
    //设置扩展dom的方法
    extendDom: function(name, fn) {
 
        if (!document.all) { //除了ie而外的浏览器都能够访问到HTMLElement这个类
            HTMLElement.prototype[name] = fn;
        } else {
            var _createElement = document.createElement;
            document.createElement = function(tag) {
                var elem = _createElement(tag);
                elem[name] = fn;
                return elem;
            }
            var _getElementById = document.getElementById;
            document.getElementById = function(id) {
                var elem = _getElementById(id);
                elem[name] = fn;
                return elem;
            }
            var _getElementsByTagName = document.getElementsByTagName;
            document.getElementsByTagName = function(tag) {
                var arr = _getElementsByTagName(tag);
                for (var i = 0; i < arr.length; i++) {
                    arr[i][name] = fn;
                }
                return arr;
            }
        }
    }

例子说话:

提示:你可以先修改部分代码再运行。

分类: HTML/CSS, JavaScript 标签:

专门IE6中png的透明(滤镜方法)

2009年11月29日 没有评论

前几天在做一个项目时.原来的logo是png格式,body的背景是水平平铺的渐变效果.在IE6中.logo处在土灰色中.因为IE6中不支持它.当时的做法.再做了一个gif的(gif效果质量有点不好)
专门针对IE6.在页面结构logo的地方加上一段JS:

1
2
3
var isie6 = window.XMLHttpRequest ? false: true;
if (document.getElementsByTagName("h1")) 
document.getElementsByTagName('h1')[0].getElementsByTagName('img')[0].src = (isie6) ? 'imageStyle/logo.gif': 'imageStyle/logo.png';

我知道有点欺骗感觉.不过今天在看新浪围脖的html结构时发现这一段
CSS:

1
2
.bigName .logo {
_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src='http://simg.sinajs.cn/miniblog/images/common/logo.png'); _background-image: none; }

html:

1
2
<div class="bigName">
<h1 class="logo"><a href="javascript:;" id="id1"></a></div>

提示:你可以先修改部分代码再运行。

推荐阅读:最佳IE6环境下实现PNG-24的应用方案

分类: HTML/CSS, JavaScript 标签:

一个效果中遇到的问题

2009年10月15日 没有评论

代码如下:
//无法完美显示,主要问题在鼠标放上而又移开后不能紧接着滚动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
function $(id) {
    return document.getElementById(id);
}
var aa = 0;
 
var hot_list = {
 
    x: function(t, t1) {
        var me = this;
        var obj = $(t).getElementsByTagName("ul"),
        len = obj.length;
        var obj1 = obj[1].getElementsByTagName("li"),
        len1 = obj1.length;
 
        for (var i = 0; i < len1; i++) {
 
            obj1[i].i = i;
            obj1[i].onmouseover = function() {
                clearInterval(timer);
                hot_list.z(t, this.i);
            }
            obj1[i].onmouseout = function() {
                timer = setInterval(function() {
                    hot_list.p("box");
                },
                1000);
            }
 
        }
 
    },
    z: function(t, node) {
        var obj = $(t).getElementsByTagName("ul"),
        len = obj.length;
 
        var obj1 = obj[0].getElementsByTagName("li"),
        len1 = obj1.length,
        obj2 = obj[1].getElementsByTagName("li");
 
        for (var j = 0; j < len1; j++) {
 
            if (obj1[j].className != "none") {
                obj1[j].className = "none";
 
            }
            if (j == node) {
                obj1[node].className = "act";
            }
 
            if (obj2[j].className != "none") {
                obj2[j].className = "none";
 
            }
            if (j == node) {
                obj2[node].className = "act";
            }
        }
    },
 
    p: function(t, aaa) {
        var me = this;
        var obj = $(t).getElementsByTagName("ul"),
        len = obj.length;
        var obj1 = obj[1].getElementsByTagName("li"),
        len1 = obj1.length;
 
        if (aa < len1) {
 
            hot_list.z(t, aa++);
 
        }
        else {
            aa = 0;
            hot_list.z(t, aa++);
        }
    }
};
 
hot_list.x("box");
var timer = setInterval(function() {
    hot_list.p("box");
},
1000);

提示:你可以先修改部分代码再运行。

分类: JavaScript 标签:

很无聊的效果

2009年10月13日 没有评论
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
function $(id) {
    return document.getElementById(id);
}
 
var mgyp = {
    x: function(t) {
        var obj = $(t).getElementsByTagName("a"),
        len = obj.length,
        me = this;
        for (var i = 0; i < len; i++) {
 
            obj[i].onclick = function() {
                var ss = (me.z(this.parentNode).className != "a") ? 0 : 1;
                me.y(t);
                if (ss) {
                    me.z(this.parentNode).className == "a";
                }
                me.z(this.parentNode).className = (ss) ? "b": "a";
            }
        }
    },
    y: function(t) {
        var obj1 = $(t).getElementsByTagName("a")
        len1 = obj1.length;
        for (var i = 0; i < len1; i++) {
 
            this.z(obj1[i].parentNode).className = "b";
        }
    },
    z: function(node) {
        var s = node.lastChild;
        while (s.nodeType != 1) {
            s = s.previousSibling;
        }
        return s;
    }
};
mgyp.x("mgyp");

提示:你可以先修改部分代码再运行。

分类: JavaScript 标签: