document 文挡对象 - JavaScript脚本语言描述
---------------------------------------------------------------------
注:页面上元素name属性和JavaScript引用的名称必须一致包括大小写
否则会提示你一个错误信息 "引用的元素为空或者不是对象"
---------------------------------------------------------------------
对象属性
---------------------------------------------------------------------
常用对象方法
---------------------------------------------------------------------
body-主体子对象
常用对象事件
---------------------------------------------------------------------
location-位置子对象
---------------------------------------------------------------------
selection-选区子对象
document.selection
---------------------------------------------------------------------
images集合(页面中的图象)
a)通过集合引用
b)通过nane属性直接引用
c)引用图片的src属性
d)创建一个图象
同时在页面上建立一个<img>标签与之对应就可以显示
----------------------------------------------------------------------
forms集合(页面中的表单)
a)通过集合引用
b)通过标签name属性直接引用
c)访问表单的属性
-----------------------------------------------------------------------
-----------------------------------------------------------------------
图层对象的4个属性
---------------------------------------------------------------------
注:页面上元素name属性和JavaScript引用的名称必须一致包括大小写
否则会提示你一个错误信息 "引用的元素为空或者不是对象"
---------------------------------------------------------------------
对象属性
- document.title //设置文档标题等价于HTML的<title>标签
- document.bgColor //设置页面背景色
- document.fgColor //设置前景色(文本颜色)
- document.linkColor //未点击过的链接颜色
- document.alinkColor //激活链接(焦点在此链接上)的颜色
- document.vlinkColor //已点击过的链接颜色
- document.URL //设置URL属性从而在同一窗口打开另一网页
- document.fileCreatedDate //文件建立日期,只读属性
- document.fileModifiedDate //文件修改日期,只读属性
- document.fileSize //文件大小,只读属性
- document.cookie //设置和读出cookie
- document.charset //设置字符集 简体中文:gb2312
document.title //设置文档标题等价于HTML的<title>标签 document.bgColor //设置页面背景色 document.fgColor //设置前景色(文本颜色) document.linkColor //未点击过的链接颜色 document.alinkColor //激活链接(焦点在此链接上)的颜色 document.vlinkColor //已点击过的链接颜色 document.URL //设置URL属性从而在同一窗口打开另一网页 document.fileCreatedDate //文件建立日期,只读属性 document.fileModifiedDate //文件修改日期,只读属性 document.fileSize //文件大小,只读属性 document.cookie //设置和读出cookie document.charset //设置字符集 简体中文:gb2312
---------------------------------------------------------------------
常用对象方法
- document.write() //动态向页面写入内容
- document.createElement(Tag) //创建一个html标签对象
- document.getElementById(ID) //获得指定ID值的对象
- document.getElementsByName(Name) //获得指定Name值的对象
- document.body.appendChild(oTag)
document.write() //动态向页面写入内容 document.createElement(Tag) //创建一个html标签对象 document.getElementById(ID) //获得指定ID值的对象 document.getElementsByName(Name) //获得指定Name值的对象 document.body.appendChild(oTag)
---------------------------------------------------------------------
body-主体子对象
- document.body //指定文档主体的开始和结束等价于<body></body>
- document.body.bgColor //设置或获取对象后面的背景颜色
- document.body.link //未点击过的链接颜色
- document.body.alink //激活链接(焦点在此链接上)的颜色
- document.body.vlink //已点击过的链接颜色
- document.body.text //文本色
- document.body.innerText //设置<body>...</body>之间的文本
- document.body.innerHTML //设置<body>...</body>之间的HTML代码
- document.body.topMargin //页面上边距
- document.body.leftMargin //页面左边距
- document.body.rightMargin //页面右边距
- document.body.bottomMargin //页面下边距
- document.body.background //背景图片
- document.body.appendChild(oTag) //动态生成一个HTML对象
document.body //指定文档主体的开始和结束等价于<body></body> document.body.bgColor //设置或获取对象后面的背景颜色 document.body.link //未点击过的链接颜色 document.body.alink //激活链接(焦点在此链接上)的颜色 document.body.vlink //已点击过的链接颜色 document.body.text //文本色 document.body.innerText //设置<body>...</body>之间的文本 document.body.innerHTML //设置<body>...</body>之间的HTML代码 document.body.topMargin //页面上边距 document.body.leftMargin //页面左边距 document.body.rightMargin //页面右边距 document.body.bottomMargin //页面下边距 document.body.background //背景图片 document.body.appendChild(oTag) //动态生成一个HTML对象
常用对象事件
- document.body.οnclick="func()" //鼠标指针单击对象是触发
- document.body.οnmοuseοver="func()" //鼠标指针移到对象时触发
- document.body.οnmοuseοut="func()" //鼠标指针移出对象时触发
document.body.οnclick="func()" //鼠标指针单击对象是触发 document.body.οnmοuseοver="func()" //鼠标指针移到对象时触发 document.body.οnmοuseοut="func()" //鼠标指针移出对象时触发
---------------------------------------------------------------------
location-位置子对象
- document.location.hash // #号后的部分
- document.location.host // 域名+端口号
- document.location.hostname // 域名
- document.location.href // 完整URL
- document.location.pathname // 目录部分
- document.location.port // 端口号
- document.location.protocol // 网络协议(http:)
- document.location.search // ?号后的部分
- documeny.location.reload() //刷新网页
- document.location.reload(URL) //打开新的网页
- document.location.assign(URL) //打开新的网页
- document.location.replace(URL) //打开新的网页
document.location.hash // #号后的部分 document.location.host // 域名+端口号 document.location.hostname // 域名 document.location.href // 完整URL document.location.pathname // 目录部分 document.location.port // 端口号 document.location.protocol // 网络协议(http:) document.location.search // ?号后的部分 documeny.location.reload() //刷新网页 document.location.reload(URL) //打开新的网页 document.location.assign(URL) //打开新的网页 document.location.replace(URL) //打开新的网页
---------------------------------------------------------------------
selection-选区子对象
document.selection
---------------------------------------------------------------------
images集合(页面中的图象)
a)通过集合引用
- document.images //对应页面上的<img>标签
- document.images.length //对应页面上<img>标签的个数
- document.images[0] //第1个<img>标签
- document.images[i] //第i-1个<img>标签
document.images //对应页面上的<img>标签 document.images.length //对应页面上<img>标签的个数 document.images[0] //第1个<img>标签 document.images[i] //第i-1个<img>标签
b)通过nane属性直接引用
- <img name="oImage">
- document.images.oImage //document.images.name属性
<img name="oImage"> document.images.oImage //document.images.name属性
c)引用图片的src属性
- document.images.oImage.src //document.images.name属性.src
document.images.oImage.src //document.images.name属性.src
d)创建一个图象
- var oImage
- oImage = new Image()
- document.images.oImage.src="1.jpg"
var oImage oImage = new Image() document.images.oImage.src="1.jpg"
同时在页面上建立一个<img>标签与之对应就可以显示
- <html>
- <img name=oImage>
- <script language="javascript">
- var oImage
- oImage = new Image()
- document.images.oImage.src="1.jpg"
- </script>
- </html>
- <html>
- <script language="javascript">
- oImage=document.caeateElement("IMG")
- oImage.src="1.jpg"
- document.body.appendChild(oImage)
- </script>
- </html>
<html> <img name=oImage> <script language="javascript"> var oImage oImage = new Image() document.images.oImage.src="1.jpg" </script> </html> <html> <script language="javascript"> oImage=document.caeateElement("IMG") oImage.src="1.jpg" document.body.appendChild(oImage) </script> </html>
----------------------------------------------------------------------
forms集合(页面中的表单)
a)通过集合引用
- document.forms //对应页面上的<form>标签
- document.forms.length //对应页面上<form>标签的个数
- document.forms[0] //第1个<form>标签
- document.forms[i] //第i-1个<form>标签
- document.forms[i].length //第i-1个<form>中的控件数
- document.forms[i].elements[j] //第i-1个<form>中第j-1个控件
document.forms //对应页面上的<form>标签 document.forms.length //对应页面上<form>标签的个数 document.forms[0] //第1个<form>标签 document.forms[i] //第i-1个<form>标签 document.forms[i].length //第i-1个<form>中的控件数 document.forms[i].elements[j] //第i-1个<form>中第j-1个控件
b)通过标签name属性直接引用
- <form name="Myform"><input name="myctrl"></form>
- document.Myform.myctrl //document.表单名.控件名
<form name="Myform"><input name="myctrl"></form> document.Myform.myctrl //document.表单名.控件名
c)访问表单的属性
- document.forms[i].name //对应<form name>属性
- document.forms[i].action //对应<form action>属性
- document.forms[i].encoding //对应<form enctype>属性
- document.forms[i].target //对应<form target>属性
- document.forms[i].appendChild(oTag) //动态插入一个控件
document.forms[i].name //对应<form name>属性 document.forms[i].action //对应<form action>属性 document.forms[i].encoding //对应<form enctype>属性 document.forms[i].target //对应<form target>属性 document.forms[i].appendChild(oTag) //动态插入一个控件
-----------------------------------------------------------------------
- <html>
- <!--Text控件相关Script-->
- <form name="Myform">
- <input type="text" name="oText">
- <input type="password" name="oPswd">
- <form>
- <script language="javascript">
- //获取文本密码框的值
- document.write(document.Myform.oText.value)
- document.write(document.Myform.oPswd.value)
- </script>
- </html>
- /
- <html>
- <!--checkbox,radio控件相关script-->
- <form name="Myform">
- <input type="checkbox" name="chk" value="1">1
- <input type="checkbox" name="chk" value="2">2
- </form>
- <script language="javascript">
- function fun(){
- //遍历checkbox控件的值并判断是否选中
- var length
- length=document.forms[0].chk.length
- for(i=0;i<length;i++){
- v=document.forms[0].chk[i].value
- b=document.forms[0].chk[i].checked
- if(b)
- alert(v=v+"被选中")
- else
- alert(v=v+"未选中")
- }
- }
- </script>
- <a href=# οnclick="fun()">ddd</a>
- </html>
- -----------------------------------------------------------------------
- <html>
- <!--Select控件相关Script-->
- <form name="Myform">
- <select name="oSelect">
- <option value="1">1</option>
- <option value="2">2</option>
- <option value="3">3</option>
- </select>
- </form>
- <script language="javascript">
- //遍历select控件的option项
- var length
- length=document.Myform.oSelect.length
- for(i=0;i<length;i++)
- document.write(document.Myform.oSelect[i].value)
- </script>
- <script language="javascript">
- //遍历option项并且判断某个option是否被选中
- for(i=0;i<document.Myform.oSelect.length;i++){
- if(document.Myform.oSelect[i].selected!=true)
- document.write(document.Myform.oSelect[i].value)
- else
- document.write("<font color=red>"+document.Myform.oSelect[i].value+"</font>")
- }
- </script>
- <script language="javascript">
- //根据SelectedIndex打印出选中的option
- //(0到document.Myform.oSelect.length-1)
- i=document.Myform.oSelect.selectedIndex
- document.write(document.Myform.oSelect[i].value)
- </script>
- <script language="javascript">
- //动态增加select控件的option项
- var oOption = document.createElement("OPTION");
- oOption.text="4";
- oOption.value="4";
- document.Myform.oSelect.add(oOption);
- </script>
- <html>
<html> <!--Text控件相关Script--> <form name="Myform"> <input type="text" name="oText"> <input type="password" name="oPswd"> <form> <script language="javascript"> //获取文本密码框的值 document.write(document.Myform.oText.value) document.write(document.Myform.oPswd.value) </script> </html> / <html> <!--checkbox,radio控件相关script--> <form name="Myform"> <input type="checkbox" name="chk" value="1">1 <input type="checkbox" name="chk" value="2">2 </form> <script language="javascript"> function fun(){ //遍历checkbox控件的值并判断是否选中 var length length=document.forms[0].chk.length for(i=0;i<length;i++){ v=document.forms[0].chk[i].value b=document.forms[0].chk[i].checked if(b) alert(v=v+"被选中") else alert(v=v+"未选中") } } </script> <a href=# οnclick="fun()">ddd</a> </html> ----------------------------------------------------------------------- <html> <!--Select控件相关Script--> <form name="Myform"> <select name="oSelect"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> </form> <script language="javascript"> //遍历select控件的option项 var length length=document.Myform.oSelect.length for(i=0;i<length;i++) document.write(document.Myform.oSelect[i].value) </script> <script language="javascript"> //遍历option项并且判断某个option是否被选中 for(i=0;i<document.Myform.oSelect.length;i++){ if(document.Myform.oSelect[i].selected!=true) document.write(document.Myform.oSelect[i].value) else document.write("<font color=red>"+document.Myform.oSelect[i].value+"</font>") } </script> <script language="javascript"> //根据SelectedIndex打印出选中的option //(0到document.Myform.oSelect.length-1) i=document.Myform.oSelect.selectedIndex document.write(document.Myform.oSelect[i].value) </script> <script language="javascript"> //动态增加select控件的option项 var oOption = document.createElement("OPTION"); oOption.text="4"; oOption.value="4"; document.Myform.oSelect.add(oOption); </script> <html>
-----------------------------------------------------------------------
- <Div id="oDiv">Text</Div>
- document.all.oDiv //引用图层oDiv
- document.all.oDiv.style.display="" //图层设置为可视
- document.all.oDiv.style.display="none" //图层设置为隐藏
- document.getElementId("oDiv") //通过getElementId引用对象
- document.getElementId("oDiv").style=""
- document.getElementId("oDiv").display="none"
- /*document.all表示document中所有对象的集合
- 只有ie支持此属性,因此也用来判断浏览器的种类*/
<Div id="oDiv">Text</Div> document.all.oDiv //引用图层oDiv document.all.oDiv.style.display="" //图层设置为可视 document.all.oDiv.style.display="none" //图层设置为隐藏 document.getElementId("oDiv") //通过getElementId引用对象 document.getElementId("oDiv").style="" document.getElementId("oDiv").display="none" /*document.all表示document中所有对象的集合 只有ie支持此属性,因此也用来判断浏览器的种类*/
图层对象的4个属性
- document.getElementById("ID").innerText //动态输出文本
- document.getElementById("ID").innerHTML //动态输出HTML
- document.getElementById("ID").outerText //同innerText
- document.getElementById("ID").outerHTML //同innerHTML
- <html>
- <script language="javascript">
- function change(){
- document.all.oDiv.style.display="none"
- }
- </script>
- <Div id="oDiv" οnclick="change()">Text</Div>
- </html>
- <html>
- <script language="javascript">
- function changeText(){
- document.getElementById("oDiv").innerText="NewText"
- }
- </script>
- <Div id="oDiv" οnmοuseοver="changeText()">Text</Div>
- </html>
document.getElementById("ID").innerText //动态输出文本 document.getElementById("ID").innerHTML //动态输出HTML document.getElementById("ID").outerText //同innerText document.getElementById("ID").outerHTML //同innerHTML <html> <script language="javascript"> function change(){ document.all.oDiv.style.display="none" } </script> <Div id="oDiv" οnclick="change()">Text</Div> </html> <html> <script language="javascript"> function changeText(){ document.getElementById("oDiv").innerText="NewText" } </script> <Div id="oDiv" οnmοuseοver="changeText()">Text</Div> </html>
解决方案
要解决此问题,请删除已损坏的注册表项,然后重新安装 TCP/IP 协议。
要删除已损坏的注册表项,请按照下列步骤操作。
警告:注册表编辑器使用不当可导致严重问题,可能需要重新安装操作系统。Microsoft 不能
保证您可以解决因注册表编辑器使用不当而导致的问题。使用注册表编辑器需要您自担风险。
1. 重新启动域控制器。
2. 当显示 BIOS 信息时,按 F8。
3. 选择“目录服务还原模式”,然后按 Enter。
4. 使用“目录服务还原模式”密码登录。
5. 单击“开始”,然后单击“运行”。
6. 在“打开”框中,键入 regedit,然后单击“确定”。
7. 找到以下注册表子项:
HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/Winsock
HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/Winsock2
8. 右键单击各项,然后单击“删除”。
9. 单击“是”,确认删除各项。
10. 关闭 Regedit。
11. 在 %winroot%/inf 中找到 Nettcpip.inf 文件,然后在记事本中打开该文件。
12. 找到“[MS-TCPIP.PrimaryInstall]”节。
13. 编辑“Characteristics = 0xa0”项,将“0xa0”替换为“0x80”。
14. 保存该文件,然后退出记事本。
15. 在“控制面板”中,双击“网络连接”,右键单击“本地连接”,然后选择“属性”。
16. 在“常规”选项卡上,单击“安装”,选择“协议”,然后单击“添加”。
17. 在“选择网络协议”窗口中,单击“从磁盘安装”。
18. 在“厂商文件复制来源:”文本框中,键入 c:/windows/inf,然后单击“确定”。
19. 选择“Internet 协议(TCP/IP)”,然后单击“确定”。
注意:此步骤将让您返回到“本地连接属性”屏幕,但现在“卸载”按钮可用。
20. 选择“Internet 协议(TCP/IP)”,单击“卸载”,然后单击“是”。
21. 重新启动计算机,然后按照步骤 2 至步骤 4 中的说明选择“目录服务还原模式”。
22. 在“控制面板”中,双击“网络连接”,右键单击“本地连接”,然后选择“属性”。
23. 在“常规”选项卡上,单击“安装”,选择“协议”,然后单击“添加”。
24. 在“选择网络协议”窗口中,单击“从磁盘安装”。
25. 在“厂商文件复制来源”文本框中,键入 c:/windows/inf,然后单击“确定”。
26. 选择“Internet 协议(TCP/IP)”,然后单击“确定”。
27. 重新启动计算机。
重新安装了 TCP/IP 后,请安装 Microsoft Windows 支持工具,然后运行 Netdiag 和
Dcdiag 工具来验证域控制器已正常工作。为此,请按照下列步骤操作: 1. 将 Windows
Server 2003 CD-ROM 插入到计算机的 CD-ROM 或 DVD-ROM 驱动器中。
2. 单击“开始”,单击“运行”,键入“DriveLetter:/Support/Tools/suptools.msi”(其
中,DriveLetter 是您的 CD-ROM 或 DVD-ROM 驱动器),然后单击“确定”。
3. 按照屏幕上的说明完成 Windows 支持工具的安装。
4. 在命令提示符处,定位到安装 Support Tools 的文件夹。默认情况下,此文件夹为
C:/Program Files/Support Tools。
5. 键入 dcdiag /v,以进行域控制器诊断,并随后对任何错误进行处理。
6. 键入 netdiag /v,以进行网络诊断,并随后对任何错误进行处理。
--------------------------------------------------------------------------------
这篇文章中的信息适用于:
? Microsoft Windows Server 2003 Datacenter Edition
? Microsoft Windows Server 2003 Enterprise Edition
? Microsoft Windows Server 2003 Standard Edition
? Microsoft Windows Server 2003 Web Edition
? Microsoft Windows Server 2003, 64-Bit Datacenter Edition
? Microsoft Windows Server 2003, Enterprise x64 Edition
要解决此问题,请删除已损坏的注册表项,然后重新安装 TCP/IP 协议。
要删除已损坏的注册表项,请按照下列步骤操作。
警告:注册表编辑器使用不当可导致严重问题,可能需要重新安装操作系统。Microsoft 不能
保证您可以解决因注册表编辑器使用不当而导致的问题。使用注册表编辑器需要您自担风险。
1. 重新启动域控制器。
2. 当显示 BIOS 信息时,按 F8。
3. 选择“目录服务还原模式”,然后按 Enter。
4. 使用“目录服务还原模式”密码登录。
5. 单击“开始”,然后单击“运行”。
6. 在“打开”框中,键入 regedit,然后单击“确定”。
7. 找到以下注册表子项:
HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/Winsock
HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/Winsock2
8. 右键单击各项,然后单击“删除”。
9. 单击“是”,确认删除各项。
10. 关闭 Regedit。
11. 在 %winroot%/inf 中找到 Nettcpip.inf 文件,然后在记事本中打开该文件。
12. 找到“[MS-TCPIP.PrimaryInstall]”节。
13. 编辑“Characteristics = 0xa0”项,将“0xa0”替换为“0x80”。
14. 保存该文件,然后退出记事本。
15. 在“控制面板”中,双击“网络连接”,右键单击“本地连接”,然后选择“属性”。
16. 在“常规”选项卡上,单击“安装”,选择“协议”,然后单击“添加”。
17. 在“选择网络协议”窗口中,单击“从磁盘安装”。
18. 在“厂商文件复制来源:”文本框中,键入 c:/windows/inf,然后单击“确定”。
19. 选择“Internet 协议(TCP/IP)”,然后单击“确定”。
注意:此步骤将让您返回到“本地连接属性”屏幕,但现在“卸载”按钮可用。
20. 选择“Internet 协议(TCP/IP)”,单击“卸载”,然后单击“是”。
21. 重新启动计算机,然后按照步骤 2 至步骤 4 中的说明选择“目录服务还原模式”。
22. 在“控制面板”中,双击“网络连接”,右键单击“本地连接”,然后选择“属性”。
23. 在“常规”选项卡上,单击“安装”,选择“协议”,然后单击“添加”。
24. 在“选择网络协议”窗口中,单击“从磁盘安装”。
25. 在“厂商文件复制来源”文本框中,键入 c:/windows/inf,然后单击“确定”。
26. 选择“Internet 协议(TCP/IP)”,然后单击“确定”。
27. 重新启动计算机。
重新安装了 TCP/IP 后,请安装 Microsoft Windows 支持工具,然后运行 Netdiag 和
Dcdiag 工具来验证域控制器已正常工作。为此,请按照下列步骤操作: 1. 将 Windows
Server 2003 CD-ROM 插入到计算机的 CD-ROM 或 DVD-ROM 驱动器中。
2. 单击“开始”,单击“运行”,键入“DriveLetter:/Support/Tools/suptools.msi”(其
中,DriveLetter 是您的 CD-ROM 或 DVD-ROM 驱动器),然后单击“确定”。
3. 按照屏幕上的说明完成 Windows 支持工具的安装。
4. 在命令提示符处,定位到安装 Support Tools 的文件夹。默认情况下,此文件夹为
C:/Program Files/Support Tools。
5. 键入 dcdiag /v,以进行域控制器诊断,并随后对任何错误进行处理。
6. 键入 netdiag /v,以进行网络诊断,并随后对任何错误进行处理。
--------------------------------------------------------------------------------
这篇文章中的信息适用于:
? Microsoft Windows Server 2003 Datacenter Edition
? Microsoft Windows Server 2003 Enterprise Edition
? Microsoft Windows Server 2003 Standard Edition
? Microsoft Windows Server 2003 Web Edition
? Microsoft Windows Server 2003, 64-Bit Datacenter Edition
? Microsoft Windows Server 2003, Enterprise x64 Edition
今天写程序时需要在网页关闭时处理一些代码,在Ie下处理没有问题,FF却没有反应
查了好多,呵呵,我对网页不熟悉,可能这是一个很单的问题,不要笑O
查了好多,呵呵,我对网页不熟悉,可能这是一个很单的问题,不要笑O
- <script>
- if (window.Event) {
- window.onbeforeunload = function(event) {
- alert("执行了");
- return HandleOnClose(event); // pass argument event block
- }
- } else {
- window.onbeforeunload = function() {
- alert("执行了");
- return HandleOnClose(event); // pass IE's global event block
- }
- }
- </script>
<script> if (window.Event) { window.onbeforeunload = function(event) { alert("执行了"); return HandleOnClose(event); // pass argument event block } } else { window.onbeforeunload = function() { alert("执行了"); return HandleOnClose(event); // pass IE's global event block } } </script>
2007
-
07
-
25
flash to js 使用工具包及示例,提供 js 和 flash 之间的通讯
关键字: flash to js 使用工具包,提供 js 和 flash 之间的通讯
下载地址:
http://weblogs.macromedia.com/flashjavascript/downloads/FlashJavascriptGateway.zip
使用此 JavaScript 与 Flash 整合工具包, JavaScript能够调用ActionScript函数(反之亦可),Flash和Html开发者能够借此进行更好的开发。可以在两种环境下相互通信主要数据类型包括:
- objects
- arrays
- strings
- numbers
- dates
- booleans
- nulls
- undefined
另外,此 JavaScript 与 Flash 整合工具包 能够正常工作于所有主要的浏览器与平台之上(详细内容请参见后面的“系统要求”)。
在以下位置可以找到相关的最新信息和最新版本:
http://www.macromedia.com/go/flashjavascript
本项目由Macromedia公司的 Christian Cantrell 和 Mike Chambers 开发编写。
******
安装
******
安装 JavaScript 与 Flash 整合工具包 非常简易。只需要将文件 JavaScriptFlashGateway.js 和JavaScriptFlashGateway.swf 从 installation 文件夹复制到网站目录下。放在哪里都可以,但建议将它放在多个项目均可使用的位置。
此工具包Flash方部分的安装要求将 source/flash/actionscript 下的库文件复制到您机器上的 Flash 或者 Flex 的类路径下( 译者注:比如D:/Macromedia/Flash MX 2004/zh_cn/First Run/Classes/):
com/macromedia/javascript/JavaScriptProxy.as
com/macromedia/javascript/JavaScriptSerializer.as
复制文件时请确保维持以上目录结构不变。
****
使用
****
-从 JavaScript 调用 ActionScript 函数-
要从 JavaScript 调用 ActionScript 函数,请确定网页文件中已链接文件 JavaScriptFlashGateway.js ,代码如下:
文件 JavaScriptFlashGateway.js 中包含了一个名为 FlashProxy(Flash代理) 的类,负责代理Flash和JavaScript之间的函数互调。FlashProxy 和在其中调用函数的Flash影片必须使用同一个 唯一标识(ID),以便让FlashProxy知道调用的函数位于网页上的哪个Flash影片上。创建唯一ID的最简单方法是使用时间戳。要创建唯一ID,可以网页面中插入这样的脚本标签:
var uid = new Date().getTime();
然后,创建一个FlashProxy的JavaScript类的实体,并传入刚刚创建的唯一ID以及文件 JavaScriptFlashGateway.swf 的路径,比如像这样:
var flashProxy = new FlashProxy(uid, '/path/to/JavaScriptFlashGateway.swf');将Flash内容加入到网页中去的时候,也要用Flash变量将相同的唯一ID传入,文件 JavaScriptFlashGateway.js 中含有一个生成Flash标签及加入所需变量的简单方法,像这样:
唯一ID通过Flash变量 lcId 被传入到Flash影片中去。现在你已经可以使用FlashProxy的实例从JavaScript调用ActionScript的函数了,像这样:
以上代码中,第一个参数是你要调用的ActionScript函数名,而其余作为调用函数的参数传入的参数必须是Flash支持的数据类型objects, arrays, strings, dates, numbers, booleans, nulls, 和 undefined 之一。
-在JavaScript中响应Flash的函数调用-
无需对JavaScript代码作特殊处理即可在Flash里响应函数调用
。
只要页面中包含了文件 JavaScriptFlashGateway.js ,使用如下所述的技术,Flash就能够以任意数目的参数调用JavaScript函数。
-从ActionScript调用JavaScript的函数-
请再次确认含有要调用JavaScript函数的HTML页中已链接了文件 JavaScriptFlashGateway.js。
将JavaScriptProxy 类导入Flash项目:
import com.macromedia.javascript.JavaScriptProxy;
然后创建JavaScriptProxy 类的实例如下:
var proxy:JavaScriptProxy = new JavaScriptProxy();
调用JavaScript函数有两种方法:
1.使用调用程序接口(API),如下:
proxy.call("javaScriptMethodName", "arg1", new Object());
第一个参数是欲调用的JavaScript函数名。其余参数将作为被调用函数的参数被传入。
2.也可以使用JavaScriptProxy类的方法来直接调用,而这些方法将被作为JavaScript(由JavaScriptProxy)代为处理。比如:
proxy.javaScriptMethodName("arg1", new Object());
-在Flash里响应JavaScript的函数调用-
要用JavaScript调用Flash影片的函数,需要创建一个 JavaScriptProxy 类的实例以及定义函数被代为处理成的对象:
var proxy:JavaScriptProxy = new JavaScriptProxy(_root.lcId, this);
构造器带有两个参数。第一个参数是从HTML页中传进Flash影片中去的唯一标识。第二个是被调用函数将被代为处理成的对象或者类的实例。注意:此参数仅在Flash影片需要响应JavaScript的函数调用时才是必须的。
这就是所需的全部代码。所有JavaScript调用都将被引向构造器中参数所定义的对象。
******
系统要求
******
此JavaScript 与 Flash 整合工具包要求 6r65 以上版本的Flash播放器,并在以下浏览器中测试通过:
Windows IE 6.0
Windows Firefox 1.0
Windows Opera 8.0
Macintosh Opera 8.0
Macintosh Firefox 1.0
Safari 1.2.4 and 2.0
Linux Firefox 1.1
******
已知问题
******
1.如非被明确的定义为 undefined,JavaScript 中的未定义对象属性将不能被连载并发给Flash。如果该变量未经声明,则将被清除。
2.在调试工具环境下,JavaScript和Flash的通讯会很缓慢,但是在其他平台和浏览器包括独立播放器下,其速度不会减缓。
3.不能传递循环中的对象或数组。JavaScript和ActionScript下的循环引用都可能引起死循环。换句话说,如果对象属性是指向其自身的一个引用,连载的代码将拼命地无限循环下去。
----------
最近由于工作需要才熟悉一下 flash ,有什么好的方法希望大家可以共享一下.
使用此 JavaScript 与 Flash 整合工具包, JavaScript能够调用ActionScript函数(反之亦可),Flash和Html开发者能够借此进行更好的开发。可以在两种环境下相互通信主要数据类型包括:
- objects
- arrays
- strings
- numbers
- dates
- booleans
- nulls
- undefined
另外,此 JavaScript 与 Flash 整合工具包 能够正常工作于所有主要的浏览器与平台之上(详细内容请参见后面的“系统要求”)。
在以下位置可以找到相关的最新信息和最新版本:
http://www.macromedia.com/go/flashjavascript
本项目由Macromedia公司的 Christian Cantrell 和 Mike Chambers 开发编写。
******
安装
******
安装 JavaScript 与 Flash 整合工具包 非常简易。只需要将文件 JavaScriptFlashGateway.js 和JavaScriptFlashGateway.swf 从 installation 文件夹复制到网站目录下。放在哪里都可以,但建议将它放在多个项目均可使用的位置。
此工具包Flash方部分的安装要求将 source/flash/actionscript 下的库文件复制到您机器上的 Flash 或者 Flex 的类路径下( 译者注:比如D:/Macromedia/Flash MX 2004/zh_cn/First Run/Classes/):
com/macromedia/javascript/JavaScriptProxy.as
com/macromedia/javascript/JavaScriptSerializer.as
复制文件时请确保维持以上目录结构不变。
****
使用
****
-从 JavaScript 调用 ActionScript 函数-
要从 JavaScript 调用 ActionScript 函数,请确定网页文件中已链接文件 JavaScriptFlashGateway.js ,代码如下:
- <script type="text/javascript" src="/path/to/JavaScriptFlashGateway.js"></script>
<script type="text/javascript" src="/path/to/JavaScriptFlashGateway.js"></script>
文件 JavaScriptFlashGateway.js 中包含了一个名为 FlashProxy(Flash代理) 的类,负责代理Flash和JavaScript之间的函数互调。FlashProxy 和在其中调用函数的Flash影片必须使用同一个 唯一标识(ID),以便让FlashProxy知道调用的函数位于网页上的哪个Flash影片上。创建唯一ID的最简单方法是使用时间戳。要创建唯一ID,可以网页面中插入这样的脚本标签:
var uid = new Date().getTime();
然后,创建一个FlashProxy的JavaScript类的实体,并传入刚刚创建的唯一ID以及文件 JavaScriptFlashGateway.swf 的路径,比如像这样:
var flashProxy = new FlashProxy(uid, '/path/to/JavaScriptFlashGateway.swf');将Flash内容加入到网页中去的时候,也要用Flash变量将相同的唯一ID传入,文件 JavaScriptFlashGateway.js 中含有一个生成Flash标签及加入所需变量的简单方法,像这样:
- <script type="text/javascript">
- var tag = new FlashTag('/path/to/flashContent.swf', 300, 300); // 最后两个参数是高和宽
- tag.setFlashvars('lcId='+uid);
- tag.write(document);
- </script>
<script type="text/javascript"> var tag = new FlashTag('/path/to/flashContent.swf', 300, 300); // 最后两个参数是高和宽 tag.setFlashvars('lcId='+uid); tag.write(document); </script>
唯一ID通过Flash变量 lcId 被传入到Flash影片中去。现在你已经可以使用FlashProxy的实例从JavaScript调用ActionScript的函数了,像这样:
- flashProxy.call('myActionScriptFunction', 'my string', 123, true, new Date(), null);
flashProxy.call('myActionScriptFunction', 'my string', 123, true, new Date(), null);
以上代码中,第一个参数是你要调用的ActionScript函数名,而其余作为调用函数的参数传入的参数必须是Flash支持的数据类型objects, arrays, strings, dates, numbers, booleans, nulls, 和 undefined 之一。
-在JavaScript中响应Flash的函数调用-
无需对JavaScript代码作特殊处理即可在Flash里响应函数调用
。
只要页面中包含了文件 JavaScriptFlashGateway.js ,使用如下所述的技术,Flash就能够以任意数目的参数调用JavaScript函数。
-从ActionScript调用JavaScript的函数-
请再次确认含有要调用JavaScript函数的HTML页中已链接了文件 JavaScriptFlashGateway.js。
将JavaScriptProxy 类导入Flash项目:
import com.macromedia.javascript.JavaScriptProxy;
然后创建JavaScriptProxy 类的实例如下:
var proxy:JavaScriptProxy = new JavaScriptProxy();
调用JavaScript函数有两种方法:
1.使用调用程序接口(API),如下:
proxy.call("javaScriptMethodName", "arg1", new Object());
第一个参数是欲调用的JavaScript函数名。其余参数将作为被调用函数的参数被传入。
2.也可以使用JavaScriptProxy类的方法来直接调用,而这些方法将被作为JavaScript(由JavaScriptProxy)代为处理。比如:
proxy.javaScriptMethodName("arg1", new Object());
-在Flash里响应JavaScript的函数调用-
要用JavaScript调用Flash影片的函数,需要创建一个 JavaScriptProxy 类的实例以及定义函数被代为处理成的对象:
var proxy:JavaScriptProxy = new JavaScriptProxy(_root.lcId, this);
构造器带有两个参数。第一个参数是从HTML页中传进Flash影片中去的唯一标识。第二个是被调用函数将被代为处理成的对象或者类的实例。注意:此参数仅在Flash影片需要响应JavaScript的函数调用时才是必须的。
这就是所需的全部代码。所有JavaScript调用都将被引向构造器中参数所定义的对象。
******
系统要求
******
此JavaScript 与 Flash 整合工具包要求 6r65 以上版本的Flash播放器,并在以下浏览器中测试通过:
Windows IE 6.0
Windows Firefox 1.0
Windows Opera 8.0
Macintosh Opera 8.0
Macintosh Firefox 1.0
Safari 1.2.4 and 2.0
Linux Firefox 1.1
******
已知问题
******
1.如非被明确的定义为 undefined,JavaScript 中的未定义对象属性将不能被连载并发给Flash。如果该变量未经声明,则将被清除。
2.在调试工具环境下,JavaScript和Flash的通讯会很缓慢,但是在其他平台和浏览器包括独立播放器下,其速度不会减缓。
3.不能传递循环中的对象或数组。JavaScript和ActionScript下的循环引用都可能引起死循环。换句话说,如果对象属性是指向其自身的一个引用,连载的代码将拼命地无限循环下去。
----------
最近由于工作需要才熟悉一下 flash ,有什么好的方法希望大家可以共享一下.