【问题标题】:UIWebView stringByEvaluatingJavaScriptFromString debuggingUIWebView stringByEvaluatingJavaScriptFromString 调试
【发布时间】:2015-07-15 02:50:08
【问题描述】:

我正在尝试实现一个相对简单的结果 - 加载页面时关注文本框。我使用此代码:

[_webView setKeyboardDisplayRequiresUserAction:NO];

NSString *javaString = [NSString stringWithFormat:@"document.getElementById('keyboard').focus()"];
NSString *result = [_webView stringByEvaluatingJavaScriptFromString:javaString];

它是通过在我的应用程序中单击按钮来调用的。此代码在测试页面上有效,但在实际站点上无效。最糟糕的是我不知道如何调试它。

什么都没有发生,结果总是空字符串。如何检查 JS 代码是否有错误?还是找不到对象?还是无法专注?

更新

正如@subzero 正确指出的那样,我忘记了问题中的实际 focus() 方法。现在是正确的。

【问题讨论】:

    标签: javascript ios uiwebview


    【解决方案1】:

    您忘记添加 focus 操作

    document.getElementById('keyboard').focus();"

    会成功的

    关于检查 JS 错误。有两种方法可以做到这一点。

    1. 最简单的: 添加这个(我正在使用 jQuery)。它会在页面底部显示错误

      $( 文档 ).ready(function() {
      window.onerror = function(err) {
          log('window.onerror: ' + err)
      }
      var uniqueId = 1
      function log (message, data) {
              var log = document.getElementById('log')
              var el = document.createElement('div')
              el.className = 'logLine'
              el.innerHTML = uniqueId++ + '. ' + message + ':<br/>' + JSON.stringify(data)
              if (log.children.length) { log.insertBefore(el, log.children[0]) }
              else { log.appendChild(el) }
      }
      

    在您的 html 中:

    <div id='log'></div>
    
    1. 看到这个What are some methods to debug Javascript inside of a UIWebView?

    【讨论】:

    • 非常感谢调试提示。当然,我忘记了问题中的 focus() 动作,它在实际代码中。
    猜你喜欢
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 2014-08-26
    • 2014-02-04
    • 2012-03-29
    相关资源
    最近更新 更多