MonoTouch的一个UIWebView和EvaluateJavascript(MonoTouch

2019-09-16 11:08发布

我有工作在以下envirnoment的应用程序:

  • MonoTouch的2.1
  • MonoDevelop的2.4.2
  • 10.6.8的MacOS
  • iOS版SDK 4.3

同一个应用程序,迁移到iOS 5.0 / 5.1和MonoTouch的5.2.10与MonoDevelop的2.8.8.4下,有以下问题:当我点击一个按钮,一个UIWebView导航不起作用。

代码是:(显然这是相同的MonoTouch的2.1)

public void ScrollToTop (object sender, EventArgs evt)
{
    webView.EvaluateJavascript("window.scrollTo(0,0)");
}

我能做什么?

解决(与Jonathan.Peppers帮助):

public void ScrollToTop (object sender, EventArgs evt)
{
    if((UIDevice.CurrentDevice.CheckVersion(5, 0)){                 
                System.Drawing.PointF p = new System.Drawing.PointF(0, 0);
                webView.ScrollView.SetContentOffset(p,true);
            }
            else{
                webView.EvaluateJavascript("window.scrollTo(0,0)");                 
            }
}

我已经以这种方式取得因为4.3 webView.ScrollView.SetContentOffset使应用程序崩溃。

Answer 1:

尝试这个:

string error = webView.EvaluateJavascript("try { window.scrollTo(0,0); } catch (e) { return e.message; }");

(仔细检查我的代码)

它应该让你更好的错误消息。 告诉我们返回的字符串的值。

我怀疑,问题不在于MonoTouch的,但也许是iOS5的? Safari浏览器曾在iOS5的剧变,新的JavaScript引擎,等等。



Answer 2:

需要注意的是UIWebView不重入 。 如果装载IOS版本之间页的变化(或只是时机)的方式,那么这可能成为一个问题。

为了避免这种情况只是确保你没有回调到任何 UIWebView ,直到加载完成,如例如LoadFinishedLoadError被调用。

如果这没有帮助,那么请创建一个小的,独立的,测试复制问题的情况下,并在附加到bug报告http://bugzilla.xamarin.com



文章来源: MonoTouch UIWebView and EvaluateJavascript