我有一个像这样的HTML文件:
<html>
<head>
<title>World Aviation</title>
<script language="javascript" src="./jquery-min.js"> </script>
<script language="javascript" src="./jsDraw2D.js"> </script>
<script language="javascript" src="./script.js"> </script>
</head>
<body>
<input onClick="startAnimBackground();" type="button" value="Start"/>
<script language="javascript">
initAirports();
initRoutes();
var w;
function startAnimBackground()
{
if(typeof(Worker) !== "undefined")
{
if(typeof(w) == "undefined")
{
w = new Worker("start_script.js");
}
} else {
startAnimation();
}
}
</script>
</body>
</html>
文件“start_script.js”只包含一行调用startAnimation()函数。此功能位于“script.js”
我的问题是:我的浏览器支持web-workers,所以它创建了一个web-worker并加载了文件“start_script.js”,但它无法调用函数“startAnimation()”,表明它无法找到该函数。但是这个函数位于head.js中,它包含在head部分中。因此,我可以得出的唯一结论是web-worker JS文件具有不同的范围,因此无法包含head部分中指定的3个javascript文件。那么我该怎么办呢? 感谢。
答案 0 :(得分:2)
网络工作者不与主脚本共享函数,变量或脚本。
要加载依赖项,请在工作程序中调用importScripts()
。
要允许您的Web工作者与主脚本或DOM进行交互或影响,您必须使用消息传递并让主脚本监听,解释和处理消息。
请参阅:https://developer.mozilla.org/en-US/docs/Web/Guide/Performance/Using_web_workers