◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
JScript 能创建多线程吗?比如主线被alert(打断)我能不能 用他的子线程 进行一些计算,
比如AJAX 一些图片 过来。
◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
JScript 能创建多线程吗?比如主线被alert(打断)我能不能 用他的子线程 进行一些计算,
比如AJAX 一些图片 过来。
◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
我看了那久 还是不得其解
谁能帮我读读其义,(代码不是我写的)
<html>
<head>
<title>ajax</title>
<script type="text/javascript" src="JS/jquery-1.4.2.js"></script>
<script src="JS/jquery-1.4.2-vsdoc.js" type="text/javascript"></script>
<script type="text/javascript">
//定义一过程
//var addCount = new Function("tagThread.innerHTML = tagThread.innerHTML * 1 + 1");
//var addCount = new Function("alert();");
//可实现多个线程,见下。
var addCount1 = function() { tagThread1.innerHTML = tagThread1.innerHTML * 1 + 1 };
var addCount2 = function() { tagThread2.innerHTML = tagThread2.innerHTML * 1 - 1 };
//生成线程类
var thrd = new Thread(1000);
thrd.Start(addCount1); //开始一线程
thrd.Start(addCount2); //又开始一线程 //以下是类定义部分:
function Thread(Timer) {
var thArr = []; //相当于 var thArr = new Array();
this.toString = function() { return "测试线程实例。" }; //类字符串化,方法重写,很受启发。
this.Timer = Timer || 1000; //如果Timer有初值, 否则Timer为1000 ,JS语言的特殊性,易读性不好,不好。
//加入生成一个滚动元素marquee
this.Tag = self.document.createElement("marquee");
this.Tag.appendChild(self.document.createTextNode("-"));
this.Tag.scrollDelay = this.Timer;
//将滚动元素marquee加入div中
var _div = document.createElement("div");
_div.style.height = 1;
//_div.style.overflow = "hidden";
_div.appendChild(this.Tag);
//滚动事件
this.Tag.onscroll = function() {
for (var i = 0; i < thArr.length; i++)
thArr[i](); //执行多个事件函数???第一次知道!以前只知道C#是可以这样的。
}
//将div加入document中
new function main() //类初试化
{
if (self.document.readyState != "complete") //如果文档未完成
return setTimeout(main); //继续调用
self.document.body.appendChild(_div); //直到文档调用完成后,加入_div(带滚动条的)
}
this.Start = function(thread) {
thArr.push(thread); //函数元素入栈
}
}
</script>
</head>
<body>
执行次数:<span id="tagThread1">0</span>
<br/>
<span id="tagThread2">100</span>
<br/>
<input type="button" value="弹出框" onclick="alert(thrd)"/>
</body>
</html>
this.Tag.onscroll = function() {
for (var i = 0; i < thArr.length; i++)
thArr[i]();
}
//将div加入document中
new function main() //类初试化
{
if (self.document.readyState != "complete") //如果文档未完成
return setTimeout(main); //继续调用
self.document.body.appendChild(_div); //直到文档调用完成后,加入_div(带滚动条的)
}
this.Tag.onscroll
new function main()
self.document.readyState
但是:
1,上面有几个代码看不明的, 请求解释一下,谢谢。2,另外问下,浏览器不对 JS 开放多线程?
象alert()
confirm("真的要执行吗? ");
prompt("输入一个5-100之间的数字<br/>")
等等这些。
可能要重写了。
据说html5有多线程worker模块,但没仔细研究过
为什么 下面的重写失败?
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title></title>
<script src="JS/jquery-1.4.2.js" type="text/javascript"></script>
<script src="JS/jquery-1.4.2-vsdoc.js" type="text/javascript"></script>
<script type="text/javascript">
window.alert = function(data){
$("#walert").html(data.toString());//这里好象不支持JQ方法啊?不知为什么。
};
alert("123");
</script>
</head>
<body>
<div id="walert"></div>
</body>
</html>
//这里好象不支持JQ方法啊?不知为什么。
IE不允许重写alert,firefox没问题