Скрипт вызова элемента управления WebBrowser всегда дает мне ошибки.Этот html-скрипт проверен на http://validator.w3.org. Я написал код такой, что при нажатии кнопки «button1» webBrowser1 вызывает функцию «setCredentials».Я не уверен, почему это выдает ошибку типа
"Произошла неизвестная ошибка. Ошибка: 80020006."
public TestInvokeScript() { InitializeComponent(); LoadHtml(); webBrowser1.IsScriptEnabled = true; webBrowser1.NavigateToString(_html); button1.Content = "Set Credentials"; } private void LoadHtml() { _html = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"" + " \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">" + "<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en\" xml:lang=\"en\">" + "<head>" + "<meta name=\"generator\" content=\"HTML Tidy for Linux (vers 6 November 2007), see www.w3.org\" />" + "<script type=\"text/javascript\">" + "//<![CDATA[" + " function setCredentials()" + " {" + " document.getElementById(\"email\").value = \"test@gmail.com\";" + " }" + "//]]>" + "</script>" + "<title></title>" + "</head>" + "<body>" + "<form action=\"https://cloudmagic.com/k/login/send\" method=\"post\">" + "<input id=\"email\" type=\"text\" value=\"\" /> " + "<input id=\"password\" type=\"password\" />" + " <button type=\"submit\" id=\"login_send\">Login</button>" + " </form>" + "</body>" + "</html>"; } private void button1_Click(object sender, RoutedEventArgs e) { var obj = webBrowser1.InvokeScript("setCredentials"); }
В чем я ошибаюсьdoing.?
Я передавал HTML в виде строки. Не зная, я использовал двойную косую черту (//) и это прокомментировало остальную часть строки, так как нет символов newLine. Мне понадобился почти день, чтобы понять это. Удалите двойную косую черту и тег CData.
Пара возможностей: 1. Убедитесь, что вы вызываете его после срабатывания PageLoaded или NavigateComplete. 2. Попробуйте это:
Dispatcher.BeginInvoke(() => { var result = webBrowser.InvokeScript("javascrpitMethod", param1, param2); });