WebBrowser a přístup k objektů v dokumentu   zodpovězená otázka

VB.NET

Zdravím,

1.) mám program na psaní článků a v tom programu můžu přehazovat mód na visual anebo textual mode. Při visual pracuji s komponentou WebBrowser, resp. TextBox. Když přehazuji mezi módy:

Sub HodToNaVisual()
WebBrowser1.Document.GetElementById("ee00e1e0e540e045e4540e04e0884e84e8").InnerHtml = Textbox1.Text ' tady v tom řádku je ta chyba, ale jaká?
End Sub
Sub HodToNaTextual()
Textbox1.Text = WebBrowser1.Document.GetElementById("ee00e1e0e540e045e4540e04e0884e84e8").InnerHtml
End Sub

a debugger mi pak označí okomentovaný řádek a vytkne mi toto:

'Object reference not set to an instance of an object.'

No co mu na to mám říct?

2.) Poradíte mi nějaký inteligentní způsob, jak často kontrolovat, jaká je hodnota atributu WebBrowser1.Document.ActiveElement? Já jsem zkusil smyčku

Private Sub WebBrowser1_Focus( ... ) Handles WebBrowser1.Focus
    While sender.Focused
        
        Application.doEvents()
    End While
End Sub

ale přišlo mi to zbytečně tíživé a nečisté. Co myslíte?

Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zkontroluj si správně to ID, protože asi v tom dokumentu neexistuje. Object reference not set to an instance of an object nastane vždycky, když něco vrátí Nothing a ty s tím dál pracuješ. Jediný, co může vracet Nothing je ta metoda GetElementById s tím prapodivným ID.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

A je možné, že je to způsobené tím, že dokument neobsahuje <html> tag?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dej sem raději to HTML toho dokumentu, ať víme, na čem jsme.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Mně se v takovýchto případech osvědčilo, podívat se na obsah, který mi vrací určitá metoda, v debugeru přes Watcher. Zkus si na funkci dát bod přerušení a pak celý ten výraz až po závorku včetně prohlédnout, je-li v něm něco (případně co), nebo je tam stále nothing.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

<body>

<div id="ee00e1e0e540e045e4540e04e0884e84e8" contenteditable="true">

<h1>New</h1>

<p>article</p>

</div>

</body>

a po úpravě tedy i s HTML záhlavím, ale to jsem ještě nezkoušel na VS, nemám ho ted sebou.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Mimochodem to opravdu zvláštní ID má ten div proto, že se opravdu nesmí stát, že uživatel vloží objekt, kterému by dal shodné id, a pojmenovat ho jako article ši snad div1 sem opravdu neměl v úmyslu :) Vím, může se stáv že uživatel (opravdu bych takového chtěl vidět) zadá shodné ID, ale bude to jen jeden z miliard, takže jsem v klidu...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Panebože já jsem tupec! Připadám si jako idiot! Jako obvykle bylo jádro problému triviální: já, jenž jsem si o sobě myslel, že jsem zkušený webdesigner, jsem tagu nastavil místo parametru id parametr class.

Kdybych to nezažil tak bych tomu nevěřil :)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pomůžete mi

prosím sestavit EventHandler pro zachytávání událostí keydown. Zatím jsem ho deklaroval:

    Dim Handler As EventHandler

    Private Sub WebBrowser1_Load() Handles WebBrowser1.DocumentCompleted
        WebBrowser1.Document.AttachEventHandler("keydown", Handler)
    End Sub

ale nevím jak dál nastavit jaká procedura se má při vyvolání události spustit.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback