如何从Webview中的javascript函数中获取价值?

时间:2018-04-29 22:02:57

标签: ios swift webview

我在我的webView中加载本地html文件。它有一些文本字段和一些单选按钮。还有一些Javascript函数用于将webView转换为html文件。但是这里有问题,我无法在我的ViewController中调用Javascript函数。在下面这个Javascript我希望获得 ios.fullcode 的值,它位于草稿函数内。这将给出一个sting值,即html。

我怎样才能得到这个价值。我尝试了许多方法,但仍然不知道。请帮助我。

谢谢高级

我是这样尝试的,

self.webView?.stringByEvaluatingJavaScript(from:"draft()")

但什么都没有

这是我的javascript

<script>

    var getJsonData = $("#jsonvalue").text();
    if(getJsonData != ""){
    SetJsonValue();
    }

    function getHtml()
    {
    var Alldata = $('form').serializeArray();
    var JsonString = JSON.stringify(Alldata);
    $("div#jsonvalue").text(JsonString);
    var allCode = document.documentElement.outerHTML;
    return allCode;
    }


    function SetJsonValue()
    {
    var getJsonData = $("#jsonvalue").text();
    var obj = $.parseJSON(getJsonData), dataObj = {};
    len = obj.length;
    for (i = 0; i < len; i++) {
    var f_name = obj[i].name;
    var f_value = obj[i].value;
    var result = f_name.split('-');
    var type = result[0];
    if (type == 'textarea') {
    $("#rendered-form " + type + "[name = " + f_name + "]").text(f_value);
    } else if (type == 'text') {
    $("input[name = " + f_name + "]").val(f_value);
    } else if (type == 'radio') {
    $('#rendered-form input[name=' + f_name + '][value=' + f_value + ']').prop("checked", true);
    } else if (type == 'select') {
    $("#rendered-form " + type + "[name = " + f_name + "]").val(f_value);
    } else {
    $(":checkbox[value=" + f_value + "]").prop("checked","true");
    }
    }
    }


    function draft(){
    var getAllHtmlCode = getHtml();
    ios.fullCode(getAllHtmlCode);

    }

    function finalsave(){
    var obj = $('form').serializeArray();
    len = obj.length;
    //$( ".fb-radio-group").hide();
    for (i = 0; i < len; i++) {
    var f_name = obj[i].name;
    var f_value = obj[i].value;
    var result = f_name.split('-');
    var type = result[0];
    if (type == 'textarea') {
    //if( f_value == "") {
    //    $( ".field-textarea-"+result[1]).hide();
    //}else{
    var bodyText = f_value;
    var body = $("<div class='ans'> </div>");
    body.text(bodyText);
    $("#rendered-form " + type + "[name = " + f_name + "]").replaceWith(body);
    //}
    } else if (type == 'text') {
    //if( f_value == "") {
    //    $( ".field-text-"+result[1]).hide();
    //}else{
    var bodyText = f_value;
    var body = $("<div class='ans'> </div>");
    body.text(bodyText);
    $("input[name = " + f_name + "]").replaceWith(body);
    //}
    } else if (type == 'radio') {
    //$(".l_header").hide();
    //$(".field-radio-group-"+result[2]).prev().show();
    //$(".field-radio-group-"+result[2]).show();
    var r_value = $('#rendered-form input[name=' + f_name + ']:checked').val();
    $('#rendered-form input[name=' + f_name + ']').parent().hide();
    $("label[for='"+f_name+"']").append('<div class="ans">'+r_value+'</div>');
    } else if (type == 'select') {
    if( f_value == "" || f_value == "0") {
    //$( ".field-select-"+result[1]).hide();
    }else{
    var lbl = $("#rendered-form " + type + "[name = " + f_name + "]").find('option:selected').text();
    var body = $("<div class='ans'> </div>");
    body.text(lbl);
    $("#rendered-form " + type + "[name = " + f_name + "]").replaceWith(body);
    }
    } else {
    $(":checkbox[value=" + f_value + "]").prop("checked","true");
    }
    }
    var allCode = document.getElementById("rendered-form").outerHTML;
    Android.finalCode(allCode);
    }
    </script>

0 个答案:

没有答案