أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

كيفية تحديد عندما هو صفحة تم تحميل في التحكم WebBrowser

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية180366
إخلاء مسؤولية من محتوى قديم في قاعدة المعارف
عن تقديم الدعم التقني لهاو لذلك تظهر هذه المقالة كما هي و لن يتم تحديثها Microsoft تمت كتابة هذه المقالة بخصوص منتجات توقفت
الموجز
عنصر التحكم WebBrowser مستكشف إنترنت وقع الحدث DocumentComplete عند الانتهاء تحميل صفحة ويب. يمكنك إنشاء دالة معالج حدث في التطبيق لهذا الحدث. توضح هذه المقالة الخطوات اللازمة في تحديد ما إذا تم الانتهاء من عنصر التحكم WebBrowser تحميل صفحة ويب.
معلومات أخرى
عنصر التحكم WebBrowser وقع الحدث DocumentComplete عند تغير الخاصية ReadyState الخاصة به إلى READYSTATE_COMPLETE. يشير هذا إلى أن عنصر التحكم WebBrowser اكتمال تحميل صفحة ويب. فيما يلي بعض النقاط الهامة بخصوص هذا الحدث:
  • في حالة التي صفحة بها أية إطارات يتم تشغيل DocumentComplete مرة واحدة بعد إجراء كل شيء.
  • في حالة أي إطارات متعددة يحصل DocumentComplete التشغيل عدة مرات. ليس كل إطار وقع هذا الحدث ولكن لكل إطار وقع حدث DownloadBegin وقع حدث DocumentComplete المطابق.
  • يحتوي الحدث DocumentComplete IDispatch * معلمة ، وهو IDispatch الإطار (shdocvw) يتم تشغيل DocumentComplete.
  • وقع إطار المستوى الأعلى DocumentComplete في النهاية. كذلك، التحقق إذا صفحة إنجاز التحميل، تحتاج إلى التحقق إذا كانت المعلمة IDispatch * نفس IDispatch عنصر التحكم WebBrowser.

    Visual Basic هنا هو الرمز الذي يقوم بإجراء هذا الاختبار:
    Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object,                                         URL As Variant)   If (pDisp Is WebBrowser1.Object) Then      Debug.Print "Web document is finished downloading"   End IfEnd Sub					
معالجة الحدث DocumentComplete في Visual C++ تحديد ما إذا كان تحميل صفحة ويب كاملة اتبع الخطوات التالية.

لاحظ أن تعتمد خطوات اتباع على طريقة استخدام عنصر التحكم WebBrowser.
  • إذا كنت تقوم بإنشاء عنصر التحكم WebBrowser في كائن CWnd/CView يجب اتباع الخطوات من 1 إلى 4.
  • إذا كنت تقوم بإنشاء عنصر التحكم WebBrowser في كائن CDialog/CFormView فقط تحتاج لاتباع الخطوة 4.
  • إذا كنت تستخدم فئة CHtmlView المتوفرة مع 6.0 Visual C++ ، تجاوز CHtmlView::DocumentComplete() ثم اتبع الخطوة 4، استخدام عضو m_pBrowserApp فئة CHtmlView الوصول إلى عنصر التحكم WebBrowser.
  1. تعريف أسلوب OnDocumentComplete في ملف الرأس لفئة CWnd/CView-اشتقاق:
    afx_msg void OnDocumentComplete(LPDISPATCH lpDisp,                                VARIANT FAR* URL);					
  2. تقوم بتعريف مصدر الحدث في نفس ملف الرأس:
    DECLARE_EVENTSINK_MAP()					
  3. في تطبيق ملف (.cpp) لفئة CWnd/CView-اشتقاق تطبيق مخطط مصدر الحدث:
    BEGIN_EVENTSINK_MAP(CYourView, CView)   ON_EVENT(CWBTstView, ID_WEB_BROWSE, 259 /* DocumentComplete */,            OnDocumentComplete, VTS_DISPATCH VTS_PVARIANT)END_EVENTSINK_MAP()					
  4. تنفيذ أسلوب OnDocumentComplete:
    void CWBTstView::OnDocumentComplete(LPDISPATCH lpDisp,                                    VARIANT FAR* URL){   IUnknown*  pUnk;   LPDISPATCH lpWBDisp;   HRESULT    hr;   pUnk = m_webBrowser.GetControlUnknown();   ASSERT(pUnk);   hr = pUnk->QueryInterface(IID_IDispatch, (void**)&lpWBDisp);   ASSERT(SUCCEEDED(hr));   if (lpDisp == lpWBDisp )   {      // Top-level Window object, so document has been loaded      TRACE("Web document is finished downloading\n");   }  lpWBDisp->Release();}					
يعمل هذا الأسلوب عند تنقل عنصر التحكم WebBrowser إلى صفحة تغيير إطار المستوى الأعلى. قل إذا يحدث التنقل داخل إطار نفسه ثم يتم DocumentComplete النهائي الذي يتم تشغيله من الإطار "و" الإطار المستوى الأعلى. على سبيل المثال، اطلع على السيناريو التالي.

عنصر التحكم WebBrowser يستضيف مجموعة إطارات. ضمن إطار واحد من مجموعة إطارات قيام المستخدم بالنقر فوق الارتباط الذي تفتح صفحة جديدة في الإطار نفسه يبقي باقي مجموعة إطارات كما هي. صفحة جديدة قد يحتوي على إطارات متعددة مرة أخرى. لذلك، تكون هناك رسائل إعلام DocumentComplete متعددة (واحد لكل إطار جديد). ولكن قد يكون DocumentComplete النهائية أن الإطار الذي قد تغير منذ أن لم تتغير إطار المستوى الأعلى.

إذا كنت ترغب في البحث عن المستند النهائي كاملة في هذا السيناريو، قد نفذ ما يلي:
تأكد ما إذا كانت المعلمة IDispatch DocumentComplete نفس المعلمة IDispatch الحدث NavigateComplete2 الأول. لأنه NavigateComplete2 الأول إطار المستوى الأعلى ثم DocumentComplete الأخير إطار المستوى الأعلى أيضاً إجراء مقارنة بأسلوب مثل يُعلمك ما إذا كانت الصفحة تم تحميل.
وفيما يلي بعض التعليمات البرمجية لـ C++:
LPDISPATCH glpDisp = NULL; // global LPDISPATCH, can also                           // be of class scope// NavigateComplete2 eventvoid CWebbrDlg::OnNavigateComplete2Explorer1(LPDISPATCH pDisp,                                             VARIANT FAR* URL){   // Check if glpDisp is NULL. If NULL, that means it is   // the top level NavigateComplete2. Save the LPDISPATCH   if (!glpDisp)      glpDisp = pDisp;}void CWebbrDlg::OnDocumentCompleteExplorer1(LPDISPATCH pDisp,                                            VARIANT FAR* URL){   if (glpDisp && glpDisp == pDisp)   {      // if the LPDISPATCH are same, that means      // it is the final DocumentComplete. Reset glpDisp      TRACE("Document is done downloading");      glpDisp = NULL;   }}				
DocumentComplete

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 180366 - آخر مراجعة: 07/01/2004 16:33:16 - المراجعة: 2.1

Microsoft Internet Explorer 4.0 128-Bit Edition, Microsoft Internet Explorer 4.01 Service Pack 2, Microsoft Internet Explorer 5.0, Microsoft Internet Explorer 5.5

  • kbmt kbhowto KB180366 KbMtar
تعليقات
/html>html>t=">ld(m); &t=">ge in languagesListForLargeScreens track by $index" class="col-sm-6 col-xs-24 ng-scope"> Paraguay - Español
Venezuela - Español
id=1&t=">4050&did=1&t=">id=1&t=">tion.protocol) + "//c.microsoft.com/ms.js'><\/script>"); src="https://c.microsoft.com/ms.js">