2009-02-26 14 views
0

WinForms sürümünden farklı olan WPF WebBrowser denetimiyle çalışıyorum ve bu mükemmel web sitesindeki birçok öneri WPF'de çalışmaz.WPF WebBrowser'ı kullanarak bir web sayfasındaki btnSubmit_onclick javascript işlevinin üzerine nasıl yazabilirim?

Bir web sayfasındaki btnSubmit_onclick() javascript işlevinin üzerine nasıl yazabilirim?

Bu işlev, baypas etmek istediğim bir onaylama iletişim kutusu oluşturur ("Emin misiniz?" Gibi). Temel olarak, mevcut olanı değiştirecek olan btnSubmit_onclick() numaralı yeni bir işlev enjekte etmek istiyorum ve sinir bozucu onaylama iletişim kutusunu atlatabilirim. MSHTML ve tüm sayfa nesnelerine erişimim var, ancak sayfanın başlığında komut dosyası enjekte etmek için mücadele ediyorum.

mshtml.IHTMLDocument2 doc = (mshtml.IHTMLDocument2)webBrowser.Document; 
mshtml.IHTMLElementCollection heads = doc.all.tags("head") as mshtml.IHTMLElementCollection; 
mshtml.IHTMLElement head = heads.item(null, 0) as mshtml.IHTMLElement; 
mshtml.IHTMLElement se = doc.createElement("script") as mshtml.IHTMLElement; 
se.innerHTML = "function btnSubmit_onclick() { alert('here we are'); }"; 

Ama şimdi başka diğer komut önce baş nesnesine bu yeni komut dosyası elemanını enjekte etmek gerekir ve bunun alt btnSubmit_onclick() fonksiyonunu varolan owerwrite umuyoruz: Şimdiye kadar var.

DEFER özelliğini kullandığımda bile başlığa herhangi bir komut dosyası eklemeyi reddeden head.injectAdjusentHTML'yi başarısızlıkla denedim.

Nasıl yapabilirim?

cevap

1

Sanırım diğerlerinin önüne enjekte etmek yerine başlığın sonuna eklemeniz gerekiyor. Javascript'in son bir-bir-kazanım türü olduğuna inanıyorum. Bu test sığınak

1

, sadece bir tahmin olduğunu: bu deneyin:

// For this code to work: add the Microsoft.mshtml .NET reference 
mshtml.IHTMLDocument2 doc = WebBrowser1.Document as mshtml.IHTMLDocument2; 
doc.parentWindow.execScript("document.body.onsubmit=new function(){ alert('here we are'); };");