MathJax удаляет все содержимое тела в UIWebView

Я пытаюсь создать метод класса, который будет принимать строку MathJax, оборачивать вокруг нее необходимый HTML-код и загружать его в указанный UIWebView. Мой код ниже:

+ (void)loadMathJax:(NSString *)jax inWebView:(UIWebView *)webView fontSize:(int)fontSize
{
    NSString *mathJaxPath = [[NSBundle mainBundle] pathForResource:@"MathJax" ofType:@"js" inDirectory:@"MathJax"];

    NSString *htmlContent = [NSString stringWithFormat:@""
                             @"<html><head>"
                             @"<meta name='viewport' content='initial-scale=1.0' />"
                             @"<style type='text/css'>"
                             @"body { background-color:transparent; font-size:%d; color: black; }"
                             @"</style>"
                             @"<script type='text/javascript' src='%@?config=TeX-AMS-MML_HTMLorMML-full'>"
                             @"</head>"
                             @"<body>\\(%@\\)</body>"
                             @"</html>"
                             , fontSize, mathJaxPath, jax];

    NSLog(@"%@",htmlContent);

   [webView loadHTMLString:htmlContent baseURL:[NSURL fileURLWithPath:mathJaxPath]];
}

Если я использую этот метод, NSLog показывает правильный HTML (например, с <body>\(Z_1 = 4 + 2i\)</body>), но веб-представление в симуляторе пустое. Использование веб-инспектора Safari показывает, что все, что находится между тегами <body>, удалено.

Что я пробовал:

  • Используйте CDN MathJax вместо того, чтобы загружать его локально. Нет разницы.
  • Замените \\(%@\\) на test text (т.е. удалите теги MathJax). По-прежнему нет содержимого между тегами <body> при запуске приложения.
  • Удалите вызов MathJax <script>. Текст теперь отображается, но не отображается как математика.
  • Измените baseURL: из mathJaxPath на nil. Нет разницы.

person commscheck    schedule 27.07.2014    source источник
comment
Во-первых, выясните, проблема в веб-представлении или в html. Используйте простой привет, мир htmlContent и посмотрите, работает ли он.   -  person duci9y    schedule 27.07.2014
comment
@ duci9y duci9y Проблема определенно связана с библиотекой MathJax. Замена htmlContent простым приветствием, мир работает нормально. Как и в моем третьем пункте, который я пробовал, если библиотека MathJax не загружена, HTML отображается правильно.   -  person commscheck    schedule 27.07.2014
comment
baseURL должен быть каталогом, в котором находится скрипт MathJAX, а mathJaxPath должно быть просто именем файла скрипта.   -  person duci9y    schedule 27.07.2014


Ответы (1)


Сработало. Я забыл закрывающий тег </script> для импорта MathJax.

person commscheck    schedule 27.07.2014