想擷取當前系統cpu的使用率,如果允許使用hta,可以使用以下的代碼擷取當前cpu的使用率(較為精確)
setInterval(function() { var locator=new ActiveXObject ("WbemScripting.SWbemLocator"); var service=locator.ConnectServer("."); var cpu=new Enumerator (service.ExecQuery("SELECT * FROM Win32_Processor")).item(); document.title = cpu.LoadPercentage;}, 1000);
如果不允許使用上面的方法,在正常的網頁中是否有更合適的方法進行粗略的估算?思路就是用一個定時器,假設間隔執行時間為500ms,當調用它時,判斷從開始計時到本次執行所用時間,如果兩者之差 == 500 則基本上可以認定為比較正常,如果 > 500+ 則針對不同的值來判定cpu的繁忙狀況(因為不同的機器,CPU處理能力不太一樣,所以這個最多隻是粗略的估算不完全準確,對系統的一些參數有較強的依賴性)
function cpuSimulator() { var J = 100, getNow = function() { return new Date().getTime(); }; !(function() { var I = document.createElement("div"), s = 50, fn = function(l) { l = 1; var now = getNow(); var c = 1; while (c < J) { if (now > D + c*s) { l++; } c++; } D = getNow(); I.innerHTML = "CPU:" + l/J * 100 + "%"; }, t = setInterval(fn, 500), D = getNow(); I.style.cssText = "width:80px; height:20px; position:fixed !important; _position:absolute; top:10px; right:10px; border:1px solid #406c99; padding:2px; color:#f00;"; document.body.appendChild(I); fn(); })();}
如果想判定的更為精準,那隻能在定時器的執行時間和對差值的對比上進行調整了。早在幾年前ajax.com上就有人已經寫出來這樣的例子了。使用起來還比較簡單,直接在你的需要監測的網頁地址欄中輸入:javascript:(function(s){s.type=’text/javascript’;s.src=’http://www.3site.eu/JPU/IJPU.js’;document.getElementsByTagName(‘head’)[0].appendChild(s)})(document.createElement(‘script’));在當前頁面右上方會出現一個小表徵圖,它分為5個等級,分別代表當前cpu高度任務的狀況(過高則說明CPU使用率是比較高的,只能進行一個大概的估算,不是很精確)這裡有一個線上例子:
<html><head><script type="text/javascript" src="http://www.3site.eu/JPU/JPU.js"><!--// JPU - by WebReflection//--></script><script type="text/javascript"><!--//function randomString(){ for(var i = 0, a = []; i < Math.ceil(Math.random() * 123456789); i++) a[i] = String.fromCharCode(Math.round(Math.random() * 50) + 30); return a.join("");};onload = function(){ setInterval(function(){ var div = document.getElementById("demo"); div.appendChild(document.createTextNode(randomString())); }, 300);};//--></script><style type="text/css">div{overflow:hidden;width:80%;height:80%;color:#FFF;}</style></head><body><div id="demo"></div></body></html>
它整個IJPU的代碼比較簡短,可以參考一下:/* (C) Andrea Giammarchi */(function (J, P, U) { var a = 'appendChild', c = 'createElement', e = 'addEventListener', d = document, l = "load", w = window; (function () { var i = setInterval(function (l) { l = 1; D = new Date - D; if (D > 700) l++; if (D > 650) l++; if (D > 600) l++; if (D > 550) l++; s(J = l < J ? --J : l); D = new Date }, 500), b = d.body, s = function () { I.className = U + J }, I = d[c]('p'), C = d[c]('link'), D = new Date; C.rel = 'stylesheet'; C.type = 'text/css'; C.href = P + U + '.css'; s(b[a](C), b[a](I)); /*@cc_on setInterval(function(){I.style.top=document.body.scrollTop+"px"},50)@*/ })()})(5, 'http://www.3site.eu/JPU/', 'JPU');