ID Artikel: 261003 - Kajian Terakhir: 22 September 2011 - Revisi: 2.0

Bagaimana menangani script kesalahan sebagai tuan rumah kontrol browser web

Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.
Perbesar semua | Perkecil semua

RINGKASAN

Kontrol browser web akan memberitahu inangnya unhandled skrip error melalui IOleCommandTarget antarmuka. Host dapat kemudian mengambil informasi tentang kesalahan, menampilkan (atau menekan) kesalahan pesan kepada pengguna, dan memilih untuk menjalankan script pada halaman.

INFORMASI LEBIH LANJUT

Ketika salah satu mesin skrip pertemuan error yang tidak tertangani, ke depan untuk kontrol browser web, yang kemudian kueri wadah untuk melihat jika wadah telah dilaksanakan kesalahan IOleCommandTarget. Jika wadah telah dilaksanakan IOleCommandTarget, panggilan kontrol browser web IOleCommandTarget::Exec metode dengan perintah ID grup CGID_DocHostCommandHandler (yang ditentukan di Mshtmhst.h file) dan ID perintah OLECMDID_SHOWSCRIPTERROR. Jika tuan rumah tidak kembali S_OKMSHTML menampilkan default "sebuah kesalahan telah terjadi pada Halaman ini" pesan galat.

Kode berikut menggambarkan bagaimana menerapkan penangan untuk ID perintah ini yang mengumpulkan informasi kesalahan dari document object model. Kode ini tidak menggambarkan penanganan kesalahan.

CATATAN: Metode ini akan tidak berlaku jika pengguna telah membersihkan Nonaktifkan Debugging Skrip centang kotak di Lanjutan tab di bawah Opsi Internet.
   STDMETHODIMP CMyBrowser::Exec( const GUID* pguidCmdGroup, DWORD nCmdID,
      DWORD nCmdexecopt, VARIANTARG* pvaIn, VARIANTARG* pvaOut )
   {

      HRESULT hr = S_OK;

      if (pguidCmdGroup && IsEqualGUID(*pguidCmdGroup, CGID_DocHostCommandHandler))
      {
         
         switch (nCmdID) 
         {
         
         case OLECMDID_SHOWSCRIPTERROR:
         {
            IHTMLDocument2*             pDoc = NULL;
            IHTMLWindow2*               pWindow = NULL;
            IHTMLEventObj*              pEventObj = NULL;
            BSTR                        rgwszNames[5] = 
                                        { 
                                           SysAllocString(L"errorLine"),
                                           SysAllocString(L"errorCharacter"),
                                           SysAllocString(L"errorCode"),
                                           SysAllocString(L"errorMessage"),
                                           SysAllocString(L"errorUrl")
                                        };
            DISPID                      rgDispIDs[5];
            VARIANT                     rgvaEventInfo[5];
            DISPPARAMS                  params;
            BOOL                        fContinueRunningScripts = true;
            int	                        i;

            params.cArgs = 0;
            params.cNamedArgs = 0;

            // Get the document that is currently being viewed.
            hr = pvaIn->punkVal->QueryInterface(IID_IHTMLDocument2, (void **) &pDoc);				
            // Get document.parentWindow.
            hr = pDoc->get_parentWindow(&pWindow);
            pDoc->Release();
            // Get the window.event object.
            hr = pWindow->get_event(&pEventObj);
            // Get the error info from the window.event object.
            for (i = 0; i < 5; i++) 
            {  
               // Get the property's dispID.
               hr = pEventObj->GetIDsOfNames(IID_NULL, &rgwszNames[i], 1, 
                       LOCALE_SYSTEM_DEFAULT, &rgDispIDs[i]);
               // Get the value of the property.
               hr = pEventObj->Invoke(rgDispIDs[i], IID_NULL,
LOCALE_SYSTEM_DEFAULT,
                       DISPATCH_PROPERTYGET, &params, &rgvaEventInfo[i],
NULL, NULL);
               SysFreeString(rgwszNames[i]);
            }

            // At this point, you would normally alert the user with 
            // the information about the error, which is now contained
            // in rgvaEventInfo[]. Or, you could just exit silently.

            (*pvaOut).vt = VT_BOOL;
            if (fContinueRunningScripts)
            {
               // Continue running scripts on the page.
               (*pvaOut).boolVal = VARIANT_TRUE;
            }
            else
            {
               // Stop running scripts on the page.
               (*pvaOut).boolVal = VARIANT_FALSE;			
            } 
            break;
         }
         default:
            hr = OLECMDERR_E_NOTSUPPORTED;
            break;
         }
      }
      else
      {
         hr = OLECMDERR_E_UNKNOWNGROUP;
      }
      return (hr);
   }
				

REFERENSI

Untuk informasi tambahan mengenai pelaksanaan IOleCommandTarget antarmuka, silakan lihat situs Web Microsoft Developer Network (MSDN) berikut:
http://MSDN.Microsoft.com/Library/default.asp?URL=/Library/psdk/com/oin_oc_9bg4.htm (http://msdn.microsoft.com/library/default.asp?URL=/library/psdk/com/oin_oc_9bg4.htm)
Untuk informasi lebih lanjut tentang mengembangkan solusi berbasis Web untuk Microsoft Internet Explorer, kunjungi Website Microsoft berikut:
http://MSDN.Microsoft.com/IE/ (http://msdn.microsoft.com/ie/)

http://support.microsoft.com/iep (http://support.microsoft.com/iep)
Kata kunci: 
kbhowto kbwebbrowser kbmt KB261003 KbMtid
Penerjemahan MesinPenerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:261003  (http://support.microsoft.com/kb/261003/en-us/ )
Retired KB ArticleSanggahan Konten KB yang Tidak Lagi Diperbarui
Artikel ini berisi tentang produk yang tidak lagi didukung oleh Microsoft. Oleh karena itu, artikel ini disajikan ?sebagaimana adanya? dan tidak akan diperbarui.