MonoTouch UIWebView和EvaluateJavascript

我有一个应用程序工作在以下环境:

  • Monotouch 2.1
  • MonoDevelop 2.4.2
  • MacOS 10.6.8
  • iOS SDK 4.3

同样的应用程序,迁移到iOS 5.0 / 5.1和Monotouch 5.2.10与MonoDevelop 2.8.8.4下,有以下问题:当我点击一个button导航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使应用程序崩溃。

尝试这个:

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

(仔细检查我的代码)

它应该给你一个更好的错误信息。 告诉我们返回的string的值。

我怀疑这个问题不是MonoTouch,但也许是iOS5? Safari浏览器在iOS5,新的JavaScript引擎等方面发生了巨大的变化

请注意, UIWebView不可重入 。 如果加载(或只是时间)的页面的方式在iOS版本之间改变,那么这可能成为一个问题。

为了避免这种情况,只要确保在加载完成之前不callback任何 UIWebView实例,例如LoadFinishedLoadError

如果这没有帮助,那么请创build一个小的,自包含的testing用例,将问题复制并附加到http://bugzilla.xamarin.com上的错误报告