Невозможно загрузить строку html в UIWebView с помощью loadHTMLString. Она отображает белую страницу. - PullRequest
0 голосов
/ 15 апреля 2019

У меня проблема с UIWebView. Я пытаюсь загрузить строку HTML, которая будет загружать другие загруженные файлы (файлы js, css, html и xml) для загрузки некоторого содержимого в пользовательский проигрыватель внутри UIWebview. То же самое работает в Android, поэтому я не думаю, что там это проблема в файлах. Но в iOS это показывает белую страницу. Я перепробовал все предложения в других подобных вопросах в переполнении стека.

Я уже проверил, правильно ли загружаются файлы или нет. Все вроде нормально. Я вижу файлы в каталогах и открываю их. Я также поместил NSLogs в webViewDidFinishLoad метод для проверки, и он также выполняется. Я не могу найти решения по этому вопросу и не определить проблему.

self.webContentView.delegate = self;
NSString* html = [player getHTMLString];
NSString* baseURL = [player getBaseURLPath];
[self.webContentView loadHTMLString:html baseURL: [NSURL URLWithString: baseURL]];

HTML-строка строится из шаблона, хранящегося в ресурсах. baseURL не ноль или неправильно. HTML строка -

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content='width=device-width'>
    <title>{{lessonTitle}}</title>
    <script type="text/javascript" language="javascript" src="file://{{icplayerPath}}/javascript/jquery-1.7.1.min.js"></script>
    <script type="text/javascript" language="javascript" src="file://{{icplayerPath}}/icplayer/icplayer.nocache.js"></script>
    <script type="text/x-mathjax-config">
     MathJax.Hub.Config({
            messageStyle: "none",
            TeX: {imageFont: null, extensions: ["mhchem.js", "AMSsymbols.js", "AMSmath.js"]},
            extensions: ["tex2jax.js", "forminput.js"],
            skipStartupTypeset: true,
            jax: ["input/TeX","output/HTML-CSS"],
            playerObject: "player"
    });
    </script>
    <script type="text/javascript" src="file://{{icplayerPath}}/javascript/MathJax/MathJax.js"></script>

    <script language="javascript">
    var player1;
    var scorm;

    function icOnAppLoaded(){
        // Load assessment
        {{#createBook}}
        player1 = icCreateBook('_icplayer', {{withCover}});
        {{/createBook}}
        {{^createBook}}
        player1 = icCreatePlayer('_icplayer');
        {{/createBook}}
        {{#lessonPages}}
        if (player1.hasOwnProperty('setPages'))
        {
            player1.setPages('{{lessonPages}}');
        }
        {{/lessonPages}}
        {{#lessonStateString}}
        stateString = "{{{lessonStateString}}}";
        player1.setState(stateString);
        {{/lessonStateString}}
        player1.load('file://{{lessonMainXmlPath}}');
        player1.onPageLoaded(function(){
            if (window.parent != null && window.parent.postMessage != null) {
                var height = $('#_icplayer').css('height');
                var width = $('#_icplayer').css('width');
                var message = "resize: width=" + width + ";height=" + height;
                var viewport = document.querySelector("meta[name=viewport]");
                viewport.setAttribute('content', 'width=' + parseInt(width));
                $('#lesson').width(width);
                $('#lesson').css('margin', '0 auto');
                window.parent.postMessage(message, '*');
        var pageNo = player1.getPlayerServices().getCurrentPageIndex();
        var theUrl = "mLibro://pageLoaded/"+pageNo;
        window.location = theUrl;
        alert(theUrl);
        }
        });
    }

    function mLibroIOS_getScore(){
        if (player1.hasOwnProperty('forceScoreUpdate')) {
            player1.forceScoreUpdate()
        }
        var pu = new PlayerUtils(player1);
        var pres = pu.getPresentation();
        var scoreNew = pu.getPresentationScore(pres);
        return JSON.stringify(scoreNew);
    }
    </script>
</head>
<!-- max-width:600px -->
<body style="padding:0px;margin:0px">
    <div id="lesson">
        <div id="_icplayer" style="padding:0px;margin:0px;float:left"></div>
    </div>
    <div style="clear: both"></div>
</body>

</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...