2009-12-16 15 views
20

में वेबब्राउज़र नियंत्रण के अंदर IE8 डेवलपर टूल्स को सक्षम करने का कोई तरीका है यदि आपके पास IE8 है, तो आपने शायद एक आसान काम किया है जो एमएस ने जोड़ा है। एफ 12 और डेवलपर टूल्स को दबाएं, डीबगर की तरह फायरबग, पॉप अप करें। यह डिबगिंग उद्देश्यों के लिए बेहद उपयोगी है, और मैं सोच रहा हूं कि एक .NET अनुप्रयोग के अंदर WebBrowser नियंत्रण से Developer Tools पॉप अप करने का कोई तरीका है या नहीं।क्या .NET अनुप्रयोग

मेरी स्थिति यह है: मेरे पास एक सी # एप्लिकेशन है जिसमें एक एम्बेडेड वेबब्रोसर नियंत्रण है। सी # ऐप और डीएचटीएम वेब ब्राउज़र सामग्री ऑब्जेक्टफॉरस्क्रिप्टिंग (सी # साइड) और window.external (DHTML पक्ष) इंटरफेस का उपयोग करके एक-दूसरे के साथ संवाद करती हैं, ताकि पूर्ण कार्यक्षमता का परीक्षण/डीबग/समस्या निवारण करने के लिए, मुझे डेवलपर को ट्रिगर करने का एक तरीका चाहिए WebBrowser नियंत्रण के भीतर से उपकरण। अब तक हम Firebug Lite का उपयोग करने तक ही सीमित हैं जो 'डीबगर' का उपयोग करके जावास्क्रिप्ट के एक चरण डीबग सत्र को गंभीर रूप से सीमित या ट्रिगर कर रहा है। जेएस, लेकिन अब हम उस बिंदु पर जा रहे हैं जहां वे विकल्प वास्तविक परेशानी बन रहे हैं और पूर्ण सुविधाओं की अनुमति नहीं देते हैं जिन्हें हम अपने निपटान में फायरबग या डेवलपर टूल्स जैसे कुछ प्राप्त करने से बाहर निकलेंगे।

मुझे वास्तव में क्या करना अच्छा लगेगा कि ऐप चल रहा है, जबकि मेरे वेब ब्राउजर नियंत्रण के अंदर से डेवलपर टूल्स पॉप अप करने में सक्षम होना है, लेकिन मुझे अभी तक इसे पूरा करने का कोई तरीका नहीं मिला है।

क्या कोई और इस मुद्दे में भाग गया है और पता चला है कि ऐसा करने का कोई तरीका है या नहीं?

+0

मुझे अत्यधिक संदेह है। –

+0

मैं उस –

उत्तर

12

नहीं, जैसा कि अन्य ने कहा है कि यह संभव नहीं है। हालांकि एक तरीका है कि आप एक कस्टम हैंडलर के माध्यम से अधिकांश विंडो त्रुटियों को तार कर सकते हैं। एक बार जब दस्तावेज़ लोड हो गया है तो आप विंडो में श्रोता संलग्न कर सकते हैं। जैसे

webBrowser.DocumentCompleted += (o, e) => 
{ 
    webBrowser.Document.Window.Error += (w, we) => 
    { 
     we.Handled = true; 

     // Do something with the error... 
     Debug.WriteLine(
      string.Format(
       "Error: {1}\nline: {0}\nurl: {2}", 
       we.LineNumber, //#0 
       we.Description, //#1 
       we.Url)); //#2 
    }; 
}; 
+1

बीटीडब्ल्यू से डरता था, यह केवल WinForms WebBrowser नियंत्रण के साथ काम करता है, न कि WPF एक – casaout

+0

@casaout - आप 'LoadCompleted' ईवेंट का उपयोग करने और फिर विंडो ऑब्जेक्ट तक पहुंचने में सक्षम होना चाहिए। एफडब्ल्यूआईडब्ल्यू में कोई "डब्ल्यूपीएफ ब्राउज़र" नहीं है, यह अभी भी मूल वेब ब्राउजर एक्टिवएक्स नियंत्रण है। – Fraser

3

मेरा मानना ​​है कि डेवलपर टूल IE होस्ट (iexplore.exe) में लागू किए गए हैं, एमएसएचटीएम में नहीं। स्पष्ट रूप से हुक इसके लिए हैं, लेकिन मुझे नहीं लगता कि आप यूआई और नियंत्रण से सामान प्राप्त कर सकते हैं।

3

एम्बेडेड होस्टरों के अंतर्निहित डेवलपर टूल का उपयोग करने का कोई तरीका नहीं है। लेकिन अगर आप डीबग करना चाहते हैं तो भी आपको सक्षम होना चाहिए, आप अपने ऐप पर विजुअल स्टूडियो/विंडबग संलग्न कर सकते हैं, इससे भी बदतर आप "डीबगर" कीवर्ड के साथ ब्रेकपॉइंट्स डाल सकते हैं। वीएस में आपको "चयन ..." मेनू से "इन कोड प्रकारों को डीबग करें" के अंतर्गत स्क्रिप्ट का चयन करना पड़ सकता है।

1

एक विकल्प एम्बेडेड पेज से एक बच्चे विंडो खोलने के लिए है, चाइल्ड विंडो IE में खोलता है और डेवलपर उपकरण काम करते हैं, आप तो कंसोल का उल्लेख करने में

window.opener 

कर सकते हैं अभिभावक और पृष्ठ में हेरफेर करें।

या माता-पिता के कंसोल को बच्चे के साथ प्रतिस्थापित करें और उसे रीडायरेक्ट करें।

var logWindow = window.open(); 
     logWindow.document.write('<html><head><title>Child Log Window</title></head>\x3Cscript>window.opener.console = console;\x3C/script><body><h1>Child Log Window</h1></body></html>'); 
     window.onunload = function() { 
      if (logWindow && !logWindow.closed) { 
       logWindow.close(); 
      } 
     }; 
संबंधित मुद्दे