在UIWebView / WKWebview中禁用自动完成功能

时间:2015-07-06 15:36:32

标签: ios swift uiwebview wkwebview

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

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

最后的办法是在HTML标签中禁用自动填充,但这需要在后端进行大量工作。

有没有办法为应用程序全局禁用自动填充功能?

提前致谢。

4 个答案:

答案 0 :(得分:3)

我认为有一种方法可以使用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');
        }
    }
}

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

有兴趣知道这是否适合您

答案 1 :(得分:0)

我已经搜索了很多这个问题。如果您想完全禁用,则必须使用<textarea>代替<div contenteditable="true">并将其加载到UIWebview。请尝试以下代码:

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

通过使用此代码,预测文字和自动填充都将下车

答案 2 :(得分:0)

Swift 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)
}

答案 3 :(得分:0)

如果您使用的是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。