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:///"]];

在换行符被杀死并且\'s被替换为“\”和“'s被替换为'\”'之后加载完全相同的网页,JavaScript无法运行,我只看到纯文本This is $x^ 2$ 没有通过 MathJax 呈现 $x^2$。

是否有一些秘密,“没有真正的 webview,请为我执行 javascript”命令,我错过了?

4

3 回答 3

3

好的,我“解决了”这个问题。出于某种原因,Web 视图不喜欢我的 baseURL 是 file:///。当我将其设置为http://www.google.com时,一切正常。我不明白传递它 file:/// 有什么问题。另外使用

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

没用,但这可能是因为捆绑包中没有空白.htm。

于 2011-03-24T18:37:51.380 回答
0

我有同样的问题,我的解决方案是将 javascript 嵌入到 html 文件中。当我将它放在一个单独的 javascript 文件中时,由于某种原因它拒绝运行 javascript。javascript 文件包含在 xcode 项目中。

仍然想知道为什么单独的 javascript 文件不起作用,有什么想法吗?

于 2011-05-19T07:08:32.257 回答
0

我也有同样的问题。我通过在 Document 文件夹中的文件中保存“textHTML”并从资源文件夹加载 MathJax(在我的情况下或在本例中从 MathJax 的网站加载)来解决它,然后它就起作用了。如果您的 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 回答