4

これが機能しない理由がわかりません。私のデスクトップには、次のような test.htm ファイルがあります。

<html><head>

<script type="text/x-mathjax-config">
MathJax.Hub.Config({
    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
});
</script>
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML-full"></script></head>
<body>

This is $x^2$

</body></html>

デスクトップからこれをロードしている WebView があります

[[webView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"file:///Users/john/Desktop/test.htm"]]];

これは正常に動作します。ページが読み込まれ、MathJax JavaScript が実行され、その $x^2$ がタイプセットされた適切な数学スクリプトに変換されます。

ただし、これを実行しようとすると:

[[webView mainFrame] loadHTMLString:@"<html><head><script type=\"text/x-mathjax-config\">MathJax.Hub.Config({tex2jax: {inlineMath: [[\"$\",\"$\"],[\"\\\\(\",\"\\\\)\"]]}});</script><script type=\"text/javascript\" src=\"http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML-full\"></script></head><body>This is $x^2$</body></html>" baseURL:[NSURL URLWithString:@"file:///"]];

改行が削除され、\ が "\" に置き換えられ、" が "\" に置き換えられた後、まったく同じ Web ページが読み込まれます。JavaScript の実行に失敗し、プレーン テキスト This is $x^ が表示されます。 $x^2$ が MathJax 経由でレンダリングされていない 2$。

私が見逃している秘密の「実際にはwebviewはありません。javascriptを実行してください」コマンドはありますか?

4

3 に答える 3

3

わかりました、私はこれを「解決」しました。何らかの理由で、Web ビューは私の baseURL が file:/// であることを好みません。http://www.google.comに設定すると、すべて正常に動作します。file:/// を渡すことの何が問題なのかわかりません。さらに使用

[[NSBundle mainBundle] URLForResource:@"blank" withExtension:@"htm"]

は機能しませんでしたが、バンドルに blank.htm がないことが原因である可能性があります。

于 2011-03-24T18:37:51.380 に答える
0

私は同じ問題を抱えていました。私の解決策は、javascriptをhtmlファイルに埋め込むことでした。別のjavascriptファイルに入れたとき、何らかの理由でjavascriptの実行を拒否しました。javascript ファイルは xcode プロジェクトに含まれていました。

なぜ個別の JavaScript ファイルが機能しないのか、まだ疑問に思っていることはありますか?

于 2011-05-19T07:08:32.257 に答える
0

私も同じ問題を抱えていました。ドキュメントフォルダーのファイルに「textHTML」を保存し、リソースフォルダーからMathJaxをロードすることで解決しました(私の場合、またはこの場合はMathJaxのWebサイトからロードします)。MathJax ファイルがローカルにある場合 (私のアプリのように)、HTML テキストのスクリプト アドレスを次のスクリプトに変更する必要があります (デバイスはシミュレーターとは異なり、大文字と小文字を区別して動作するため、アドレスを記述するときは注意してください)。

<script type="text/javascript" src="../YOUR_APPLICATION_NAME.app/MathJax/MathJax.js"></script>

その詳細は次のとおりです。

NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
path = [path stringByAppendingString:@"/myHTML.html"];
NSString *textHTML = @"<html>..."; // change to your HTML string
NSError *error;
BOOL ok = [textHTML writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error];
if(ok){
    NSLog(@"Write done!");
    NSURL *url = [NSURL fileURLWithPath:path isDirectory:NO];
    [webView loadRequest:[NSURLRequest requestWithURL:url]];
}else
    NSLog(@"Error!");

うまくいくことを願っています!

于 2011-10-20T09:10:06.593 に答える