2014-07-27 23 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顯示正確的HTML(例如用<body>\(Z_1 = 4 + 2i\)</body>),但在模擬器web視圖是空白的。使用Safari網絡檢查器顯示<body>標籤之間的所有內容已被刪除。

事情我已經嘗試:

  • 使用MathJax CDN,而不是裝載在本地。沒有不同。
  • test text代替\\(%@\\)(即刪除MathJax標記)。 <body>標籤之間仍然沒有內容運行應用程序。
  • 刪除MathJax <script>調用。文本現在顯示出來,但沒有呈現爲數學。
  • baseURL:從mathJaxPath更改爲nil。沒有不同。
+0

首先,弄清楚它是否是web視圖或html的問題。使用簡單的hello世界'htmlContent',看看它是否有效。 – duci9y

+0

@ duci9y這個問題肯定似乎與MathJax庫有關。用一個簡單的hello世界替換'htmlContent'可以正常工作。就像我嘗試過的第三點要點,如果MathJax庫沒有加載,HTML就會正確渲染。 – commscheck

+0

'baseURL'應該是MathJAX腳本所在的目錄,'mathJaxPath'應該只是腳本文件的名稱。 – duci9y

回答

0

解決了它。我忘記了MathJax導入的關閉</script>標記。