Как я могу получить значение из функции JavaScript в Webview? - PullRequest
0 голосов
/ 30 апреля 2018

Я загружаю локальный html-файл в мой webView. У него есть текстовое поле и радио-кнопка. Также есть некоторая функция Javascript для преобразования webView в html файл. Но вот проблема, я не смог вызвать функцию Javascript в моем ViewController . В этом ниже Javascript я хочу получить значение ios.fullcode , которое находится внутри черновой функции. Это даст строковое значение 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...