2014-07-27 2 views
0

MathJax 문자열을 취하고 필요한 HTML을 둘러싼 다음 지정된 UIWebView로로드하는 클래스 메서드를 만들려고합니다. 나는이 방법을 사용하는 경우MathJax는 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 (예를 들어 <body>\(Z_1 = 4 + 2i\)</body>와) 올바른 HTML을 표시하지만 시뮬레이터에서 웹보기가 비어 있습니다 : 내 코드는 다음과 같습니다. Safari 웹 속성을 사용하면 <body> 태그 사이에 모든 것이 제거되었음을 알 수 있습니다.

상황은 내가 시도 :

  • 사용 MathJax CDN 대신로드를 로컬. 차이 없음.
  • \\(%@\\)test text으로 바꾸십시오 (즉, MathJax 태그를 제거하십시오). 앱 실행시 태그가 여전히 <body> 사이에 없습니다.
  • MathJax <script> 호출을 제거하십시오. 이제 텍스트가 나타나지만 수학으로 렌더링되지 않습니다.
  • baseURL:을 mathJaxPath에서 nil으로 변경하십시오. 차이 없음.
+0

먼저 웹보기 또는 html에 문제가 있는지 파악합니다. 간단한 세상의'htmlContent'를 사용하고 그것이 작동하는지 확인하십시오. – duci9y

+0

@ duci9y 문제는 확실히 MathJax 라이브러리와 관련이있는 것 같습니다. 'htmlContent'를 간단한 hello world로 바꾸면 잘 동작합니다. MathJax 라이브러리가로드되지 않은 경우 시도한 세 번째 글 머리표처럼 HTML이 제대로 렌더링됩니다. – commscheck

+0

'baseURL'은 MathJAX 스크립트가 위치한 디렉토리 여야하며'mathJaxPath'는 스크립트 파일의 이름이어야합니다. – duci9y

답변

0

해결했습니다. MathJax 가져 오기에 대해 닫는 </script> 태그를 잊어 버렸습니다.

관련 문제