C#Webbrowser.invokeScript和错误:80020006仅在此特定站点中

时间:2012-04-17 23:28:53

标签: c# windows-phone-7 browser invokescript

我已经尝试了几个小时的解决方案......

我正在为windowsphone做一个应用程序,用于显示公共交通细节。 我需要更改WhereFrom和WhereTo的值,然后在tinyurl网页中单击“提交”,然后抓取信息。 如果您可以推荐任何其他方式来做到这一点,请告诉它。我也试过了webclient,httpwebrequest,但他们的说明和例子对我来说太复杂了。

我遇到了前面提到的错误和selain.InvokeScript(“eval”);线导致它。更奇怪的是,我在这个tinyurl网站上只收到了这个错误。例如,当使用www.bing.com网站时,我有另一个错误:80020101使用第三个Invokescript行。

using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using System.Runtime.InteropServices; //COMException
namespace PhoneApp5
{

    public partial class MainPage : PhoneApplicationPage
    {

        // Constructor
        public MainPage()
        {

            InitializeComponent();
            //selain as WebBrowser. It's instanted in mainpage.xaml

            selain.IsScriptEnabled = true;

            selain.LoadCompleted += new System.Windows.Navigation.LoadCompletedEventHandler(selain_LoadCompleted);

            selain.Navigating +=new EventHandler<NavigatingEventArgs>(selain_Navigating);
            string osoite = "http://tinyurl.com/c7xel8s";
            //string osoite = "http://bing.fi";
            selain.Navigate(new Uri(osoite));

        }

        private void selain_Navigating(object sender, NavigatingEventArgs e)
        {

        }

        private void selain_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e)
        {
            //Updates textblock in mainpage
            tekstiBlokki.Text = "READY";
        }


        private void button1_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                selain.InvokeScript("eval");
                selain.InvokeScript("eval", "document.getElementById('keya')");
                selain.InvokeScript("eval", "document.getElementById('sb_form_q').value = 'Roadname';");
                //selain.InvokeScript("eval", "document.getElementById('keyb').value=\"" + textBox2.Text + '\"');
            }
            catch (ObjectDisposedException)
            {
                MessageBox.Show("Selain ei ole enää toiminnassa");
            }
            catch (InvalidOperationException)
            {
                MessageBox.Show("Reference not found");
            }
            catch (COMException)
            {
                MessageBox.Show("Vastaavaa Jscript funktiota ei löydy");
            }

        }
    }
}

1 个答案:

答案 0 :(得分:-1)

您正尝试在所有页面中调用名为 eval 的脚本。第二个参数是 eval 函数的参数。有可能,页面上没有 eval 功能,因此您会遇到异常。

查看InvokeScript here的文档。