2012-02-13 22 views
0

WebBrowserコントロールの呼び出しスクリプトは、常にエラーを表示します。このhtmlスクリプトはhttp://validator.w3.orgから検証されています。私は "button1"をクリックするとwebBrowser1が "setCredentials"という関数を呼び出すようなコードを書いた。これは私がやっている間違いは何WP7 Webbrowser InvokeScriptエラー

"An unknown error has occurred. Error: 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 = \"[email protected]\";" + 
       "      }" + 
       "//]]>" + 
       "</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");    
    } 

のようなエラーを与えている理由私はわかりませんか。?

答えて

1

私は文字列形式でHTMLを渡しました。無意識のうちに、私はダブルスラッシュ(//) を使用し、それはnewLine文字がないので文字列の残りの部分をコメントしました。これを理解するには、私は一日かかりました。ダブルスラッシュとCDataタグを削除します。

+0

downvoteの理由を教えてください。 – Prakash

1

可能性のカップル:
1. PageLoadedまたはNavigateCompleteが発生した後に必ず呼び出します。
2.この方法を試してください。

Dispatcher.BeginInvoke(() => 
        { 

         var result = webBrowser.InvokeScript("javascrpitMethod", param1, param2); 
        }); 
+0

PageLoadedイベントまたはNavigateCompleteイベントの後に呼び出すと役立つとは思っていません。ページがロードされているので、それ以降はスクリプトを実行するためにボタンをクリックしているためです。 – Prakash