2011-10-08 11 views
11

जब मैं विभिन्न वेबसाइटों पर नेविगेट करता हूं तो वेबब्राउज़र नियंत्रण में पृष्ठ शीर्षक कैसे प्राप्त कर सकता हूं?मैं WebBrowser नियंत्रण में पृष्ठ शीर्षक कैसे प्राप्त कर सकता हूं?


xmlns

xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" 

गुण डी के साथ शुरू

DataContext 
DesiredSize 
Dispatcher 
DoubleTap 

XAML टैग

<phone:WebBrowser Name="browser" Height="760" VerticalAlignment="Top"></phone:WebBrowser> 

उत्तर

9

मुझे एक ही समस्या थी। @Akash कावा के जवाब लगभग सही है, लेकिन यह एचटीएमएल शीर्षक को पढ़ने के लिए सही जावास्क्रिप्ट है:

String title = (string)browser.InvokeScript("eval", "document.title.toString()"); 
+0

जैसा कि डेविड ने कहा था, ठीक से काम करने के लिए इसे ** WebBrowser.LoadCompleted ** ईवेंट हैंडलर में कॉल किया जाना चाहिए। इसके अतिरिक्त, चूंकि इसे किसी ईवेंट हैंडलर में निष्पादित किया जा रहा है, इसलिए उपरोक्त कोड को WPF के लिए 'Control.Invoke' या सिल्वरलाइट/विंडोज फोन के लिए 'डिस्पैचर। इन्वोक' की कार्रवाई के भीतर बुलाया जाना चाहिए यदि यूआई अपडेट किया जा रहा है। – Ben

0

आप InvokeScript उपयोग कर सकते हैं, के रूप में शीर्षक प्राप्त करने के लिए

String title = browser.InvokeScript("document.title"); 

मुझे नहीं पता कि यह सही है या नहीं, लेकिन आप window.title भी कोशिश कर सकते हैं।

+0

मैंने 'लोडकंपलेटेड 'ईवेंट पर प्रयास किया और यह एक अज्ञात अपवाद फेंक दिया। – BrunoLM

+0

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

+1

मैंने नेविगेटेड ईवेंट प्राप्त करते समय इसे कॉल करने का प्रयास किया और एक अपवाद प्राप्त किया जो "त्रुटि: 80020006" पढ़ता है। और हाँ, मेरे पास XAML में IsScriptEnabled = "True" है। – tronman

0

मैं बहुत यकीन है कि

String title = browser.Document.Title; 

चाल करना चाहिए हूँ।

here देखें।

+0

डी से शुरू होने वाली गुण: डेटाकॉन्टेक्स्ट, वांछित आकार, डिस्पैचर, डबलटैप। (Microsoft.Phone.Controls)। xaml टैग: '<फोन: वेब ब्राउजर नाम =" ब्राउज़र "ऊंचाई =" 760 "वर्टिकल एलाइनमेंट =" टॉप "> ' – BrunoLM

+1

क्षमा करें, नियमित फॉर्म वेबब्रोसर नियंत्रण के बारे में सोच रहा था। क्या आपने @ आकाश कव के जवाब की कोशिश की है, लेकिन 'IsScriptEnabled' संपत्ति' सत्य 'पर सेट है? –

+0

हाँ, वही परिणाम ... – BrunoLM

2

मेरे लिए निम्नलिखित कोड काम करता है। @ आकाश और @ मिक्को के उत्तरों ने मुझे सही रास्ते पर सेट किया, लेकिन मुझे अभी भी कुछ वेबसाइटों के साथ कुछ समस्याएं थीं। समस्या यह है कि मैं समझता हूं कि नेविगेटेड ईवेंट तब उठाया जाता है जब WebBrowser घटक रिमोट सर्वर से डेटा प्राप्त करना शुरू कर देता है। चूंकि DOM ऑब्जेक्ट अभी तक पूरा नहीं हुआ है, इसलिए document.title पर कॉल करना एक त्रुटि फेंकता है। इसलिए जब तक मैं शीर्षक प्राप्त नहीं करता तब तक मैं कुछ मिलीसेकंड के बाद पुनः प्रयास करता हूं। यह "लूप" मैंने कभी भी किसी भी वेबसाइट पर 3 बार से अधिक बार फिर से शुरू नहीं किया है और मुझे हर बार मुझे शीर्षक लाया है।

private void webBrowser1_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e) 
{ 
    ThreadPool.QueueUserWorkItem(UpdateText); 
} 

private void UpdateText(object o) 
{ 
    Thread.Sleep(100); 
    Dispatcher.BeginInvoke(() => 
    { 
     try 
     { 
      textBlock1.Text = webBrowser1.InvokeScript("eval", "document.title").ToString(); 
     } 
     catch (SystemException) 
     { 
      ThreadPool.QueueUserWorkItem(UpdateText); 
     } 
    }); 
} 
0

नीचे कोड मेरे लिए काम करता है, नेविगेट घटना ध्यान दें, यदि आप लोड का उपयोग यह बस से पहले पृष्ठ लोड होता है ट्रिगर करेगा, कि कुछ समय को गति प्रदान करने "के बाद" पृष्ठ फुल्ली लोडेड, नेविगेट कार्य करता है चाहता हूँ उस घटना के रूप में।

private void web1_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e) 
    { 
     //Added thread using "using System.Thread", to act as a buffer for any page delay. 
     Thread.Sleep(2000); 
     String title = (string)web1.InvokeScript("eval", "document.title"); 
     PageTitle.Text = title; 

    } 
1

सभी जवाब 100% सही नहीं हैं:,

स्ट्रिंग title = (स्ट्रिंग) browser.InvokeScript ("eval" "document.title.toString (:

आप निम्न कॉल करना होगा) ");

में

ब्राउज़र की घटना LoadCompleted, और में नहीं घटना नेविगेट किया है।

संबंधित मुद्दे