У меня проблема с 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>