Dalam pembangunan web, JavaScript adalah bahagian penting. Dengan pembangunan dan aplikasi JavaScript yang berterusan, pembangun berhadapan dengan lebih banyak ralat JavaScript. Ralat ini boleh menyebabkan ranap halaman, kegagalan fungsi, atau kebocoran maklumat pengguna. Oleh itu, adalah sangat penting untuk mengenal pasti dan mengendalikan ralat JavaScript dengan segera. Artikel ini akan memperkenalkan cara menggunakan kawalan WebBrowser, WTL dan JavaScript untuk pengendalian ralat JavaScript.
Kawalan WebBrowser ialah kawalan ActiveX dalam sistem pengendalian Microsoft Windows dan boleh digunakan untuk membenamkan penyemak imbas web. Kawalan WebBrowser menyokong semua fungsi penyemakan imbas web yang disokong oleh pelayar IE, seperti HTML, CSS, JavaScript, dsb.
Kawalan Penyemak Imbas Web boleh membenamkan penyemak imbas web dalam aplikasi Win32 tempatan, menyediakan antara muka GUI gaya pelayar dan membenarkan pembangun menggunakan bahasa pengaturcaraan seperti C++ untuk memanggil API pelayar untuk mengakses kandungan web. Kawalan ini membolehkan pembangun membenamkan halaman web dalam aplikasi desktop seperti Microsoft Word, menyediakan antara muka dan fungsi pengguna yang lebih kaya.
WTL (Windows Template Library) ialah perpustakaan templat C++ untuk pembangunan aplikasi Windows. Ia menggunakan teknologi seperti kelas templat yang disediakan oleh ATL (Active Template Library) untuk memudahkan pembangun menulis aplikasi Windows. Oleh kerana WTL menggunakan kelas templat, ia boleh mengurangkan beban untuk mencipta kawalan dan sumber pemprosesan Oleh itu, WTL ialah salah satu perpustakaan UI berprestasi terbaik pada platform Windows.
WTL menyediakan sejumlah besar makro dan kelas templat untuk kawalan tetingkap dan pemprosesan mesej, yang boleh mengurangkan jumlah kod untuk panggilan API Win32. Ia menyediakan sejumlah besar kelas pembantu dan alatan untuk mencipta, melanjutkan dan berinteraksi dengan kawalan antara muka, membolehkan pembangun menyepadukan kawalan WebBrowser dalam program mereka dalam masa yang lebih singkat.
Memandangkan JavaScript ialah bahasa tafsiran masa jalan, ralat mungkin berlaku dalam kod. Ralat JavaScript dibahagikan kepada ralat sintaks dan ralat logik.
Ralat sintaks ialah ralat yang disebabkan oleh kod yang tidak mematuhi spesifikasi sintaks JavaScript. Contohnya, kesilapan ejaan, koma hilang, kurungan tidak sepadan, dsb.
Ralat logik ialah ralat yang disebabkan oleh maksud kod yang salah atau konteks pelaksanaan yang salah. Contohnya, menambah rentetan dan nombor, menggunakan pembolehubah tidak diisytiharkan, dsb.
Untuk ralat sintaks, ia boleh diperbetulkan melalui IDE atau editor kod. Untuk ralat logik, ia perlu diselesaikan melalui penyahpepijatan kod atau pengendalian ralat. Kaedah pengendalian ralat JavaScript terbahagi terutamanya kepada penyataan cuba-tangkap dan kaedah window.onerror.
Pernyataan cuba-tangkap ialah kaedah pengendalian ralat biasa Ia digunakan untuk menangkap ralat yang berlaku dalam blok kod cuba dan mengendalikannya melalui pernyataan dalam blok kod tangkapan. Contohnya:
try { // some code } catch(err) { console.log(err.message); }
Kaedah window.onerror ialah kaedah pengendalian ralat global JavaScript yang membenarkan pembangun mengendalikan ralat JavaScript semasa masa jalan. Contohnya:
window.onerror = function(message, url, lineNumber) { console.log("Error: " + message + " in " + url + " at line " + lineNumber); }
Untuk membenamkan kawalan WebBrowser dalam WTL, anda perlu melakukan langkah berikut:
4.1 Cipta aplikasi WTL Aplikasi Win32
Gunakan Visual Studio untuk mencipta aplikasi Win32 kosong, kemudian pilih Wizard Aplikasi WTL dan cipta aplikasi WTL.
4.2 Tambah kawalan WebBrowser dalam kotak dialog
Dalam editor dialog, tambahkan jenis ruang "CCustomControl", dan kemudian tetapkan IDnya kepada "IDC_EXPLORER".
4.3 Buat kelas yang mengandungi kawalan WebBrowser
rreee4.4 Tambah kawalan WebBrowser dalam kelas dialog
Dalam fail pengepala kelas dialog, tambahkan pembolehubah ahli:
class CWebBrowserView : public CWindowImpl<CWebBrowserView, CAxWindow> { public: BEGIN_MSG_MAP(CWebBrowserView) MESSAGE_HANDLER(WM_CREATE, OnCreate) END_MSG_MAP() private: LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { HRESULT hr = CreateControl(CComBSTR("{8856F961-340A-11D0-A96B-00C04FD705A2}"), m_hWnd, NULL); return 0; } };
Dalam OnInitDialog, peruntukkan ruang untuk kawalan WebBrowser:
CWebBrowserView m_wndView;
Benamkan skrip JavaScript dalam kawalan WebBrowser, terutamanya seperti Kaedah berikut :
5.1 Menghuraikan secara langsung skrip JavaScript
Anda boleh menghuraikan dan melaksanakan skrip JavaScript secara terus melalui kaedah yang disediakan oleh kawalan WebBrowser. Contohnya:
CRect rcClient; GetClientRect(&rcClient); m_wndView.Create(m_hWnd, rcClient, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
5.2 Benamkan skrip JavaScript dalam halaman HTML
Anda boleh membenamkan skrip JavaScript dalam halaman HTML, contohnya:
CComPtr<IDispatch> spDocDisp; m_explorer.QueryService(IID_IDispatch, IID_IDispatch, reinterpret_cast<void**>(&spDocDisp)); CComVariant vtResult; CComBSTR bstrScript("if (confirm('Are you sure?')) { alert('OK'); }"); spDocDisp.Invoke1(L"eval", &CComVariant(bstrScript), &vtResult);
5.3 Muatkan fail JavaScript luaran
Fail JavaScript luaran boleh dimuatkan melalui teg skrip dalam halaman HTML. Contohnya:
<html> <body> <script type="text/javascript"> function checkForm() { var name = document.getElementById("name").value; if (name == '') { alert('Please enter your name.'); return false; } return true; } </script> <form onsubmit="return checkForm();"> <p>Name: <input type="text" id="name"></p> <p><input type="submit" value="Submit"></p> </form> </body> </html>
Benamkan kawalan WebBrowser dalam aplikasi WTL dan benamkan skrip JavaScript dalam halaman HTML, contohnya:
<head> <script type="text/javascript" src="test.js"></script> </head>
Tambah pengendalian mesej tetingkap dalam aplikasi WTL untuk mendapatkan mesej ralat JavaScript. Contohnya:
<html> <body> <script type="text/javascript"> function test() { var name = document.getElementById("name").value; if (name == '') { throw new Error('Please enter your name.'); } } </script> <form onsubmit="test();"> <p>Name: <input type="text" id="name"></p> <p><input type="submit" value="Submit"></p> </form> </body> </html>
Kemudian, daftarkan pengendalian mesej ralat ke acara DocumentComplete kawalan WebBrowser. Contohnya:
LRESULT OnError(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { CComPtr<IServiceProvider> spSrvProvider; HRESULT hr = m_explorer.QueryInterface(IID_IServiceProvider, reinterpret_cast<void**>(&spSrvProvider)); CComPtr<IWebBrowser2> spBrowser; hr = spSrvProvider->QueryService(SID_SWebBrowserApp, IID_IWebBrowser2, reinterpret_cast<void**>(&spBrowser)); CComPtr<IDispatch> spScript; hr = spBrowser->get_Script(&spScript); CComBSTR bstrMessage; hr = spScript.GetPropertyByName(L"error.message", &CComVariant(), &bstrMessage); CComBSTR bstrUrl; hr = spScript.GetPropertyByName(L"error.url", &CComVariant(), &bstrUrl); CComVariant vtLine; hr = spScript.GetPropertyByName(L"error.lineNumber", &CComVariant(), &vtLine); ATLTRACE(_T("JavaScript error: %s in %s at line %d"), bstrMessage, bstrUrl, V_I4(&vtLine)); return 0; }
Dengan cara ini, apabila ralat JavaScript ditemui dalam kawalan WebBrowser, maklumat ralat boleh diperoleh dan diproses melalui fungsi pemprosesan mesej OnErro.
Artikel ini memperkenalkan cara untuk membenamkan kawalan WebBrowser dalam aplikasi WTL dan memperkenalkan kaedah pengendalian ralat JavaScript. JavaScript ialah bahagian penting dalam pembangunan web, dan pengendalian ralat JavaScript yang tepat pada masanya adalah penting untuk meningkatkan keteguhan dan keselamatan aplikasi. Apabila membangun menggunakan kawalan WebBrowser dan teknologi WTL, pembangun boleh melaksanakan pemantauan dan pemprosesan ralat JavaScript dengan lebih mudah, memberikan pengguna aplikasi web yang lebih stabil dan selamat.
Atas ialah kandungan terperinci pelayar web wtl pengendalian ralat javascript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!