0

我在 webview 上通过 stringByEvaluatingJavaScriptFromString 运行一些 javascript 代码。当我尝试在代码中记录 js 的结果时没有输出,除非我运行像“document.title”这样简单的东西,它可以工作。

但是使用 Safari 中的远程调试器,我可以使用控制台运行完全相同的代码并获得正确的结果。

关于这里可能发生什么会阻止 javascript 在应用程序中工作的任何想法?显然代码很好,因为它可以在调试器中运行。在应用程序的 web 视图中运行 javascript 是否有限制?

谢谢!

4

1 回答 1

0

我在让 Javascript/Native 接口工作时也遇到了一些问题,所以我的一些学习:

  • 一旦 Javascript 解释器遇到错误(无论如何,缺少分号或其他),它就会默默地停止工作并且不会继续。
  • 听起来很愚蠢,但放入@"alert(1);"你的stringByEvaluatingJavaScriptFromString:,看看它是否确实有效。
  • 保持通过 stringByEvaluatingJavaScriptFromString 发送的命令简短;创建 javascript 方法并从本机代码调用它们,例如,
    [self.webView stringByEvaluatingJavaScriptFromString:@"doalliwant();"];
    而不是通过该接口传输 100 kb 文件。
  • 使用类似https://code.google.com/p/jsbridge-to-cocoa/的东西将数据从 Javascript 发送到 Obj-C 代码。这样,您可以在 Javascript 中实现最少的登录。(通过将其发送到 Obj-C 并在那里记录)
  • 为您的 UIWebview 使用远程调试,WWDC 会话“600 - 在 iOS 上调试 UIWebViews 和网站”对此进行了描述。您可以通过 iOS 开发者计划网站获得它。要启用基础功能,请转到 Settings->Safari->Advanced 并启用 Web Inspector。将您的设备连接到 Mac,在调试器中启动 XCode 和您的应用程序。在 Mac 上启动 Safari。打开 Safari 的设置,在最后一个选项卡中启用开发者菜单。重新启动 Safari。在新的开发者菜单中,您现在应该会看到您的 iOS 设备的名称,您可以在其中选择您的应用并开始调试。

希望这能让你开始......

于 2012-12-01T18:01:17.387 回答