【问题标题】:Disable autocomplete in UIWebView/WKWebview在 UIWebView/WKWebview 中禁用自动完成
【发布时间】:2015-07-06 15:36:31
【问题描述】:

我正在开发一个充当 web 视图的简单应用程序。我需要在 webview 中加载的任何内容上禁用自动完成和其他几个键盘功能。我知道如何在普通视图控制器中禁用每个 UITextInput 的自动完成功能,但我不知道你可以在 webview 上全局禁用自动完成功能吗?

我查看了 UITextInputTraits Here 的文档,但似乎没有任何效果。

最后的手段是禁用 HTML 标记中的自动完成功能,但这需要在后端进行大量工作。

有没有办法为应用全局禁用自动完成功能?

提前致谢。

【问题讨论】:

    标签: ios swift uiwebview wkwebview


    【解决方案1】:

    我认为没有办法用 iOS 代码做到这一点。但是,我可能错了。

    你可以尝试每次加载网页时在webview中运行下面的JS

    var textFields = document.getElementsByTagName('input');
    
    if (textFields) {
        var i;
        for( i = 0; i < textFields.length; i++) {
            var txtField = textFields[i];
            if(txtField) {
                txtField.setAttribute('autocomplete','off');
                txtField.setAttribute('autocorrect','off');
                txtField.setAttribute('autocapitalize','off');
                txtField.setAttribute('spellcheck','false');
            }
        }
    }
    

    在我看来,这应该可以完成这项工作,而无需您在服务器中进行更改:)

    很想知道这是否适合你

    【讨论】:

    • 并非所有输入标签都是文本字段,输入类型也可以是文件、日期/时间、电子邮件、电话号码、图片、收音机、复选框、月份等。
    【解决方案2】:

    我已经搜索了很多这个问题。如果您想完全禁用它,那么您必须使用&lt;textarea&gt; 而不是&lt;div contenteditable="true"&gt; 并将其加载到UIWebview。试试下面的代码:

     <textarea id="content" spellcheck="false" autocorrect="off" autocomplete="off"></textarea>
    

    通过使用此代码,预测文本和自动完成都将退出

    【讨论】:

      【解决方案3】:

      如果您使用的是 WKWebView,请使用此函数:

      func RemoveAutoCompleteFromWebView(webView: WKWebView) {
          let script: String = """
              var textFields = document.getElementsByTagName('input');
      
              if (textFields) {
                  var i;
                  for( i = 0; i < textFields.length; i++) {
                      var txtField = textFields[i];
                      if(txtField) {
                          txtField.setAttribute('autocomplete','off');
                          txtField.setAttribute('autocorrect','off');
                          txtField.setAttribute('autocapitalize','off');
                          txtField.setAttribute('spellcheck','false');
                      }
                  }
              }
          """
          webView.evaluateJavaScript(script, completionHandler: nil)
      }
      

      这将运行在新类型的 WebView 中禁用自动完成所需的 JavaScript。只需传入你想要的 WKWebView。

      【讨论】:

        【解决方案4】:

        斯威夫特 4

        func disableAutocomplete() {
            let disableAutocompleteScript: String = """
                var textFields = document.getElementsByTagName('textarea');
                if (textFields) {
                    var i;
                    for( i = 0; i < textFields.length; i++) {
                        var txtField = textFields[i];
                        if(txtField) {
                            txtField.setAttribute('autocomplete','off');
                            txtField.setAttribute('autocorrect','off');
                            txtField.setAttribute('autocapitalize','off');
                            txtField.setAttribute('spellcheck','false');
                        }
                    }
                }
            """
            webView.stringByEvaluatingJavaScript(from: disableAutocompleteScript)
        }
        

        【讨论】:

        • 虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。
        猜你喜欢
        • 1970-01-01
        • 2015-04-22
        • 2015-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多