在 UIWebView 中调试 Javascript 的方法有哪些?

我想弄清楚为什么 Javascript 在 UIWebView 中不能工作。据我所知,没有办法在 XCode 中为 js 文件设置断点。没问题,我只要回到2004年,使用警告语句——哦,等等,它们似乎在 UIWebView 中也不起作用!

我唯一能想到的就是将 HTML 和 JS 文件导出到桌面,然后在 Safari 中进行调试。成功了!当然,我在 UIWebView 中与之抗争的 bug 不会出现在 Safari 中。

在 UIWebView 内部是否有其他调试方法,或者我可以使用类似于使用老式警报方法的任何技巧?

98688 次浏览

当然对我有用。

但是,您也可以做很多其他事情,比如制作自己的 DHTML 警报,它会弹出到一个图层中。这很好,因为您可以对一个 div 执行多个通知,而无需停止应用程序。您还应该能够向它写入一个堆栈跟踪(堆栈跟踪位于异常对象中,并且始终可以抛出自己的异常)。

或者,如果在模拟器上运行,你的自定义“ alert ()”可以调用到目标 C,并在 iPhone 模拟器的控制台窗口中显示字符串:

document.location.href = "http://debugger/" +
encodeURIComponent(outputString);

在目标 C 方面:

//--------------------------------------------------------------------
- (BOOL)webView:(UIWebView*)webView
shouldStartLoadWithRequest: (NSURLRequest*)req
navigationType:(UIWebViewNavigationType)navigationType {
if ([[[req URL] host] isEqualToString:@"debugger"]){
// do stuff with [[req URL] path]
}
}

也就是说,我有一个应用程序,是沉重的 UiWebView/javascript 材料,我倾向于做大多数的 javascript 开发在 Chrome (模拟什么是必要的从 iPhone 环境)

您可以设置一个类似于 PhoneGap中使用的系统,从 JavaScript 发送消息到 Objective-C 并从那里进行日志记录。简而言之,它们使用自定义方案设置 document.location,并在委托回调中阻塞该方案。

您可以利用 UIWebView 是 WebView 的大多数委托这一事实。WebKit 在技术上没有为 iPhone 提供文档,但大多数情况下与桌面 WebKit 头中指定的相同,可能包括 WebScriptObject。我使用它进行调试,但是在提交给苹果之前一定要删除这段代码。

若要从 UIWebView 获取 WebView,请在 UIWebView 的子类中实现类似 -(void) webView:(id)inWebView didFinishLoadForFrame:(id)inWebFrame的委托方法。如果你用那个,打电话给管理员。

我还没试过这个,但看看这个 Weinre

看起来很有希望。

这个查询超过谷歌,所以值得链接到 隐藏在 iOS5中的远程监视器-到目前为止找到的最好的方式来调试你的 UIWebView-只是条件编译出来之前,你发送到苹果。

如果你正在使用 iOS > = 6,并且你有美洲狮(10.8)或 Safari > = 6,你可以:

  1. 在模拟器(或 XCode > = 4.5.x 中的设备)中打开应用程序。
  2. 打开 Safari (转到 Preferences -> Advanced,确保菜单栏中的“显示开发菜单”处于打开状态。
  3. 从(Safari 的)菜单栏中选择 Develop -> iPhone Simulator -> [your webview page]

就是这样!

这是一个古老的问题,但我仍然愿意分享我的意见。

我一直在使用 Jsconsole.com进行远程调试。很简单。只需包含一个脚本标记,并通过打印使用控制台日志进行调试。这也可以用于在实际设备上进行调试。

老问题,但是我认为我找到了最好的解决方案,在我的案例中,你需要调试 uiwebview,但是我没有访问 IOS 应用程序,只能访问 html 内容,我不得不查看一些 JS 日志,我添加了下面的代码来加载轻的 Firebug JS 并自动显示它:

从 JS 那里打来的

var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://getfirebug.com/firebug-lite-debug.js';
document.head.appendChild(script);

或者从 html 加载

<script type="text/javascript" src="https://getfirebug.com/firebug-lite-debug.js"></script>

我得到了很棒的方式来调试 UIWebViewSFSafariViewController .

我希望能有所帮助。

第一步: 在你的苹果电脑上打开 Safari VC (哈哈哈,别做鬼脸,如果我在你的苹果电脑上说只要按照我的步骤做就行了)

步骤2: 进入 Safari 首选项并点击提前按钮。你会在你的 MacBook 屏幕上得到这个设置。

enter image description here

现在启用 Show 来开发菜单栏中的菜单。现在你所有的工作都完成了。你以为我在开玩笑吗。

步骤3: 在设备或模拟器中运行应用程序。(Don’t Think Just run)然后进入打开 Webview 或 SFSafariViewController 的应用程序。 直到现在你还不明白我知道。冷静下来,看看我的下一步。

第四步:打开 MacBook 中的 Safari,在菜单栏上单击“开发”选项。你的 MacBook,iPad/iPhone 正在正确显示吗?

enter image description here

点击你的设备,然后点击 URL 新的弹出窗口就会像这样出现。 enter image description here

你现在在看什么? 这里是所有的台阶。

现在在这个控制台上调试您的网页。 当你在做代码的时候,喝杯茶或者 咖啡。

不要忘记启用“查看下图” enter image description here