Javascript 如何在MonoTouch中捕获UIWebView错误?

Javascript 如何在MonoTouch中捕获UIWebView错误?,javascript,ios,uiwebview,xamarin.ios,onerror,Javascript,Ios,Uiwebview,Xamarin.ios,Onerror,这里有一个类似于Objective C的问题,但我不确定将其转换为MonotTouch的正确方法是什么 基本上,我希望能够捕获JavaScript错误,并至少知道文件名和行号。不幸的是,window.onerror没有提供这一关键信息 特别是,我不确定我是否应该公开一个本地库,或者我是否可以用纯MonoTouch来写这个 请注意,他的代码还包括一个可用于启用的私有API调用。 (但出于某种原因,这件事对我不起作用。) 更新:关于如何在Mountain Lion中调试UIWebView,您需要下载

这里有一个类似于Objective C的问题,但我不确定将其转换为MonotTouch的正确方法是什么

基本上,我希望能够捕获JavaScript错误,并至少知道文件名和行号。不幸的是,
window.onerror
没有提供这一关键信息

特别是,我不确定我是否应该公开一个本地库,或者我是否可以用纯MonoTouch来写这个

请注意,他的代码还包括一个可用于启用的私有API调用。
(但出于某种原因,这件事对我不起作用。)

更新:关于如何在Mountain Lion中调试UIWebView,您需要下载旧版本的Chromium

请记住,在调试时只使用私有API。如果您提交应用程序并忘记删除这些调用,苹果将拒绝您的应用程序。因此,Xcode和MonoDevelop代码都使用
DEBUG
条件

以下是我使用的完整源代码:

Xcode项目 UIWebView+Debug.h UIWebView+Debug.m 因为我无法使
LinkWith
属性正常工作,所以我将其放在项目属性中:

iPhone构建项目选项 模拟器

-gcc_flags "-L${ProjectDir}/Native -lNativeLib-arm7 -force_load ${ProjectDir}/Native/libNativeLib-arm7.a"
sh ${SolutionDir}/NativeLib/compile-arm "${ProjectConfigName}"
设备

-gcc_flags "-L${ProjectDir}/Native -lNativeLib-i386 -force_load ${ProjectDir}/Native/libNativeLib-i386.a"
sh ${SolutionDir}/NativeLib/compile-arm "${ProjectConfigName}"
自定义命令>生成前 命令

模拟器

-gcc_flags "-L${ProjectDir}/Native -lNativeLib-arm7 -force_load ${ProjectDir}/Native/libNativeLib-arm7.a"
sh ${SolutionDir}/NativeLib/compile-arm "${ProjectConfigName}"
设备

-gcc_flags "-L${ProjectDir}/Native -lNativeLib-i386 -force_load ${ProjectDir}/Native/libNativeLib-i386.a"
sh ${SolutionDir}/NativeLib/compile-arm "${ProjectConfigName}"
工作目录

${SolutionDir}/NativeLib
最后,以下是构建脚本:

编译-i386 编译臂
我意识到这可能不是最好的方法,但效果很好。
如果您知道一个更简单的解决方案,请随意发布。

我采用了Pablo的分类,灵感来自

请注意,他的代码还包括一个可用于启用的私有API调用。
(但出于某种原因,这件事对我不起作用。)

更新:关于如何在Mountain Lion中调试UIWebView,您需要下载旧版本的Chromium

请记住,在调试时只使用私有API。如果您提交应用程序并忘记删除这些调用,苹果将拒绝您的应用程序。因此,Xcode和MonoDevelop代码都使用
DEBUG
条件

以下是我使用的完整源代码:

Xcode项目 UIWebView+Debug.h UIWebView+Debug.m 因为我无法使
LinkWith
属性正常工作,所以我将其放在项目属性中:

iPhone构建项目选项 模拟器

-gcc_flags "-L${ProjectDir}/Native -lNativeLib-arm7 -force_load ${ProjectDir}/Native/libNativeLib-arm7.a"
sh ${SolutionDir}/NativeLib/compile-arm "${ProjectConfigName}"
设备

-gcc_flags "-L${ProjectDir}/Native -lNativeLib-i386 -force_load ${ProjectDir}/Native/libNativeLib-i386.a"
sh ${SolutionDir}/NativeLib/compile-arm "${ProjectConfigName}"
自定义命令>生成前 命令

模拟器

-gcc_flags "-L${ProjectDir}/Native -lNativeLib-arm7 -force_load ${ProjectDir}/Native/libNativeLib-arm7.a"
sh ${SolutionDir}/NativeLib/compile-arm "${ProjectConfigName}"
设备

-gcc_flags "-L${ProjectDir}/Native -lNativeLib-i386 -force_load ${ProjectDir}/Native/libNativeLib-i386.a"
sh ${SolutionDir}/NativeLib/compile-arm "${ProjectConfigName}"
工作目录

${SolutionDir}/NativeLib
最后,以下是构建脚本:

编译-i386 编译臂
我意识到这可能不是最好的方法,但效果很好。
如果您知道一个更简单的解决方案,请随时发布