English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

عمال الويب في HTML5

يتم تشغيل web worker في الخلفية، ولا يؤثر على أداء الصفحة.

ما هو Web Worker؟

عند تشغيل سكربت في صفحة HTML، يصبح حالة الصفحة غير الاستجابة حتى يكتمل السكربت.

يتم تشغيل web worker في الخلفية، ويكون JavaScript مستقلًا عن السكربتات الأخرى، ولا يؤثر على أداء الصفحة. يمكنك الاستمرار في القيام بأي شيء تريده: النقر، اختيار النص، وما إلى ذلك، بينما يعمل web worker في الخلفية.

دعم المتصفح

يدعم متصفحات Internet Explorer 10، Firefox، Chrome، Safari و Opera Web workers.

مثال على Workers في HTML5

في المثال التالي، يتم إنشاء web worker بسيط يقوم بالعد في الخلفية:

مثال عبر الإنترنت

عدد:


كود ملف demo-workers.js:

var i=0;
function timerCount()
{
i=i+1;
postMessage(i);
setTimeout("timerCount()",500);
}
timerCount();

تحقق من دعم متصفح المستخدم لـ Web Worker

قبل إنشاء web worker، يرجى التحقق من دعم متصفح المستخدم له:

if(typeof(Worker)!=="undefined")
{
    // نعم! يدعم Web worker!
    // بعض التعليمات.....
}
else
{
    //آسف! Web Worker غير مدعوم
}

إنشاء ملف web worker

الآن، دعونا ننشئ جسم web worker في JavaScript الخارجي.

في هذا المكان، قمنا بإنشاء سكربت العد. يتم تخزينه في ملف "demo-workers.js":

var i=0;
function timerCount()
{
    i=i+1;
    postMessage(i);
    setTimeout("timerCount()",500);
}
timerCount();

جزء مهم من التعليمات أعلاه هو دالة postMessage() - وهي تستخدم لمرسل رسالة إلى صفحة HTML.

ملاحظة: عادةً لا يستخدم web worker في هذه السكربتات البسيطة، بل في المهام التي تتطلب موارد CPU بشكل كبير.

إنشاء جسم Web Worker

لدينا ملف web worker، الآن نحتاج إلى استدعاءه من صفحة HTML.

التعليمات التالية تفحص وجود worker، إذا لم يكن موجودًا،- سينشئ جسمًا جديدًا من web worker ويشغل التعليمات في ملف "demo-workers.js":

if(typeof(w)=="undefined")
{
    w=new Worker("demo-workers.js");
}

ثم يمكننا استقبال الرسائل من العامل الافتراضي.

أضف مستمع "onmessage" إلى العامل الافتراضي Web:

w.onmessage=function(event){
    document.getElementById("result").innerHTML=event.data;
};

عندما يرسل العامل الافتراضي رسالة، سيتم تنفيذ الكود الموجود في مستمع الحدث. يحتوي event.data على البيانات المأخوذة من event.data.

إيقاف وظيفة العامل الافتراضي

بعد إنشاء عنصر العامل الافتراضي، سيستمر في الاستماع إلى الرسائل (حتى بعد اكتمال سكريبت الخارجي) حتى يتم إيقافه.

لإيقاف وظيفة العامل الافتراضية وتحرير موارد المتصفح/الحاسوب، استخدم طريقة terminate().

w.terminate();

كود مثال كامل لوظائف العمال الافتراضية Web

لقد رأينا الآن كود العامل في ملف .js. إليك الآن كود صفحة الويب:

<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>موقع دروس الأساسيات (oldtoolbag.com)</title> 
</head>
<body>
 
<p>عدد: <output id="result"></output></p>
<button onclick="startWorker()">بدء العمل</button> 
<button onclick="stopWorker()">توقف العمل</button>
 
<p><strong>ملاحظة:</strong> متصفح إنترنت إكسبلورر 9 وأحدث إصداراته لا يدعم وظائف العمال الافتراضية Web.</p>
 
<script>
var w; 
function startWorker() {
    if(typeof(Worker) !== "undefined") {
        if(typeof(w) == "undefined") {
            w = new Worker("demo-workers.js");
        }
        w.onmessage = function(event) {}}
            document.getElementById("result").innerHTML = event.data;
        };
    } else {
        document.getElementById("result").innerHTML = "آسف، متصفحك لا يدعم Web Workers...";
    }
}
 
function stopWorker() 
{ 
    w.terminate();
    w = undefined;
}
</script>
 
</body>
</html>
التحقق من هذا لـ ‹/›

عمال الويب والDOM

بما أن العمال الويب يوجدون في ملفات خارجية، فإنهم لا يمكنهم الوصول إلى العناصر التالية من JavaScript:

  • مفردة النافذة

  • مفردة المستند

  • مفردة الورثة