JavaScript FAQ(二十四)
二十一、声音
1、可以播放声音的浏览器(Audio-enabled Browsers)
Q:什么可以浏览器可以执行播放声音的脚本?
A:如果在声音播放描述的技术可以在Miscrosoft Internet Explorer 4.0及其更新版本中工作,那么同样可以在Netscape Navigator 3.0及其更新版本中工作。要在Internet Explorer中播放声音,在4.0以及后来版本中测试就足够了。然后在Netscape Navigator中,你必须确保以下几点:
浏览器版本是3.0或者更新版本
启用Java(不仅仅是JavaScript!)
浏览器能够识别你要播放音频文件的mime类型
LiveAudio插件可用
例如,如果你想在下面的EMBED标记中播放声音文件mySound.mid
<EMBED NAME="mySound" SRC="mySound.mid" mce_SRC="mySound.mid"
LOOP=FALSE AUTOSTART=FALSE HIDDEN=TRUE MASTERSOUND>
那么,就需要使用下面的代码进行测试:
ver=parseInt(navigator.appVersion)
if (ver>2 && navigator.appName=="Netscape"
&& navigator.mimeTypes['audio/x-midi']
&& navigator.javaEnabled()
&& document.mySound.IsReady() )
{
// put Netscape-specific code here
}
if (ver>3 && navigator.appName.indexOf("Microsoft")!=-1)
{
// put Explorer-specific code here
}
2、音频文件格式(Audio File Formats)
Q:网页可以播放那些类型的音频文件?
A:所有启用音频的浏览器都支持回放WAV和MIDI格式(.mid、.midi和.wav文件)的音频文件。根据用户浏览器和系统配置的不同的,其他格式文件也许支持或不支持。例如,ReadAudio只能用户安装了RealPlayer才可以回放。
3、使用JavaScript播放声音(Playing Sound from JavaScript)
Q:我如何编写一个播放声音JavaScript脚本呢?
A:有几种不同的方式可以通过JavaScript播放声音。我们来看几个例子:
示例1. 这是一个最简单的播放声音文件的跨浏览器脚本:
self.location="AUDIO_FILE_URL"
点击这里测试示例1代码。浏览器会打开一个单独的声音控制窗口。那么用户需要手动关闭这个窗口。注意,示例1对用户并不友好:用户每一次点击运行脚本,浏览器都会打开一个新的声音控制窗口,即使已经有音频窗口已经在播放同样的文件!
示例2. 这是一个更加复杂的例子,这个例子没有单独的声音控制窗口。(下面有关于这个例子的讨
相关文档:
"These memory leaks often
occur as a result of circular references between JavaScript objects and
objects within IE’s DOM (document object model)."
GPDE Team Blog
明显的DOM对象与 JavaScript对象循环引用很好判断,难的是隐含的循环引用判断!
隐含的循环引用需要通过作用域链进行分析判 ......
这个问题很简单,主要有下面几个知识点:
(1) 取得时间:var d=new Date();var time=d.toLocaleString()
(2) 显示在网页上,假设写在一个<span>中,且该<span>的id为showTime:
document.getElementById("showTime").innerHTML ......
function getHeight(){
var yScroll;
if (window.innerHeight && window.scrollMaxY) {
yScroll = window.innerHeight + window.scrollMaxY;
} else if (document.body.scrollHeight > document.body.offs ......
CSDN的Blog比较强悍,一篇文章能写那么多,大家去出处看吧,那儿好看些:http://blog.csdn.net/panxuan/archive/2007/11/26/1902826.aspx
事件源对象
event.srcElement.tagName
event.srcElement.type
捕获释放
event.srcElement.setCapture();
event.srcElement.releaseC ......
重点在于function scroll(),function clipShow()及以下for循环。
无缝滚动新闻的Javascript源代码,放在这里,有需要的时候可能用得上:
//CSS样式
<style>
.new_newsT{
padding-top: 10px;
padding-bottom: 8px;
}
.new_newsT .list {
CLEAR: both; MARGIN: 0px 6px 0px 10px
}
......