HTML5网站建设的外部JS调用重要代码清单

发布时间:2014-11-28 7:56:07

HTML5网站建设的外部JS调用重要代码清单

  重要代码清单
  为比较带WebWorker及不带WebWorker的脚本表现,我们尝试在两种环境下调用程序。首先我们将包含线程的外部JavaScript文件(canvasjprofile.js)放到页面的开头以便首先加载,这样omnessage函数才能成为一个全局变量——而非仅在线程代码里生效。下面让我们开始编写HTML代码:
  
  CalculateelevationprofileswithWebWorkers
  

Numberofprofiles
  Numberofsectionsinprofile
  


  

Start
  orWebWorkers
  类型为number的两个输入区域中的内容一旦作出改变,将导致函数updateProgressBarsO被调用,并在该函数中创建出进度条及输出结果的占位符。海拔文件的计算通过两个按钮with及without开始。
  在JavaScript代码中,宁波网站建设认为为了从PNG图像中提取出海拔值,我们需要将图像载人一个新的canvas元素:
  varcanvas=document.createElement(MCANVAS");canvas.width=;canvas.height=;
  varcontext=canvas.getContext('2d')j
  varimage=document.querySelector("IMG");context.drawlmage(image,);//document.querySelector(wB0DYw).appendChild(canvas);varelev=context.getImageData(0,0,canvas.width,canvas.height).data;varalpha=[];for(vari=0;i  网页里唯一的img元素被载入为变量image,并被绘制在新创建的canvas元素中。鉴于该img元素被标记为display:none,而canvas从依附于DOM树,所以无论是图片还是画布在网页上都不可见。不过若在此前代码中激活注释行,就可以在页面底部看见画布。getImageData()函数会生成包含canvas颜色及alpha通道值的数组(都是每像素包含4个元素)。因为alpha通道值会被用到,所以我们通过foi循环将它从数组中取出来。压缩数据量无疑是明智的选择,因为每个线程都会收到一份数组的拷贝。若我们并行开始4个线程,每个线程的内存占用率将直线上升。
  之后,根据传递至函数calcProfilesO的值为true或false来决定是否用多线程开展计算:
  calcProfiles=function(useWorker){
  USEWORKER=useWorker;startTime=newDate();for(vari=0;i  变量PROFILES包含了相关input字段的值,并控制核心foi循环的运行频率。变量imgData根据图像海拔值(alpha)、环节数(PARTS)、画布髙度(height)与宽度(width)、外加一个ID(id)创建。这些创建要素将在稍后被档案引用。其后程序逻辑将自己分为使用WebWorker和不使用WebWorker的两部分:
  if(USE_WORKER){
  imgData.useWorker=true;
  varworker=newWorker('canvas_profile.js');worker.postMessage(imgData);一worker.onmessage=function(evt){if(evt.data.task=='update'){progress.item(evt.data.id).value=evt.data.status*i;}elseif(evt.data.task=='newMin'){JCprogDivMin'+evt.data.idJ.innerHTML=evt.data.min;}elseit(evt.data.task=='newMax'){JCprogDivMax'+evt.data.idJ.innerHTML=evt.data.max;}else{showResults(evt);
  imgData.useWorker=false;showResultsf
  onmessage({data:imgData})
  );
  progress.item(i).value=PARTS;
  第一种情况创建了一个新线程并通过postMessageO将其激活,然后将变量imgData的整个数据结构传递给它。由此定义出的时间监听器接收四种不同类型的信息。update类型的信息用来更新进度条,newMin及newMax用来重设网站上的相关海拔值。其他类型的信息会调用showResultO函数,算出总的运算时间与坐标点数量并显示在海拔档案上。
  若不使用多线程,则将调用外部JavaScript文件中的onmessage()函数,并将变量imgData包裹成JavaScript对象的数据属性。这是一种非常实用的方法,因为线程中的postMessageO函数同样会将数据包裹成这样的结构,我们就不需要多余的代码了。
  本文由乐华网络编辑,转载请注明出处
  宁波网站建设www.leseo.net

上一篇:
底子上各种纷歧样的搜索引擎的技能迥然纷歧样,但常常可以由于些微的区别而让搜索效果(SearchEng
下一篇:
再来谈外部页面的联接,即是指其他网站联接到你的页面的联接,进行办法叙说如下。交际网络联接,这儿指的是
关于乐华
乐华介绍
乐华思维
人才招聘
使用条款
隐私保护
RSS订阅
网站地图
新闻动态
乐华观点
行业动态
频道介绍
服务介绍
案例展示
品牌研究
品牌理论
品牌体系
联系我们
400-680-2900
社会媒体
微信公众平台
微信公众平台