Cocoa WebView没有';t运行loadHTMLString中给出的JavaScript

Cocoa WebView没有';t运行loadHTMLString中给出的JavaScript,cocoa,webview,mathjax,Cocoa,Webview,Mathjax,我不明白这为什么不起作用。我的桌面上有一个test.htm文件,如下所示: <html><head> <script type="text/x-mathjax-config"> MathJax.Hub.Config({ tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]} }); </script> <script type="text/javascript" src="http://cd

我不明白这为什么不起作用。我的桌面上有一个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>
这很好用。页面加载,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:///"]];
[[webView mainFrame]loadHTMLString:@“MathJax.Hub.Config({tex2jax:{inlineMath:[[\“$\”,\“$\”],[\“\\\\(\”,\“\\\\)\“]});这是$x^2$”基本URL:[nsurlUrlWithString:@“文件://”];
当换行符被删除,替换为“\”和“'s替换为“\”,加载完全相同的网页时,JavaScript无法运行,我只看到纯文本这是$x^2$,没有通过MathJax呈现$x^2$

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

好的,我“解决”了这个问题。由于某些原因,web视图不喜欢使用我的baseURLfile:///. 当我将其设置为时,一切正常。我不明白传球有什么不对file:///. 附加使用

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

不起作用,但这可能是因为捆绑包中没有blank.htm。

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


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

我也有同样的问题。 我通过将“textHTML”保存在文档文件夹的文件中并从资源文件夹加载MathJax(在我的例子中,或者在本例中从MathJax的网站加载)解决了这个问题,然后它就工作了。 如果您的MathJax文件是本地文件(如我的应用程序),则需要将HTML文本上的脚本地址更改为此脚本(编写地址时要小心,因为该设备工作于区分大小写的环境,与模拟器不同):


详情如下:

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!");
NSString*path=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)objectAtIndex:0];
path=[path stringByAppendingString:@/myHTML.html];
NSString*textHTML=@“…”;//更改为HTML字符串
n错误*错误;
BOOL ok=[textHTML writeToFile:path原子:YES编码:NSUTF8StringEncoding错误:&错误];
如果(确定){
NSLog(@“写入完成!”);
NSURL*url=[NSURL fileURLWithPath:path-isDirectory:NO];
[webView loadRequest:[nsurlRequestRequestWithURL:url]];
}否则
NSLog(@“错误!”);

我希望,它对你有用

这也不起作用:[NSURL fileURLWithPath:[[NSBundle mainBundle]bundlePath][NSURL URLWithString:@]也不起作用,所以我现在就到此为止。我不需要这个应用程序的基本url。也不需要使用
[NSURL URLWithString:@]http://www.google.com“]
[NSURL URLWithString:@“localhost/”]
因为基本字符串对我有效。关于这个问题,你还有什么发现吗?我无法让它起作用。你能看看我的代码吗?未来的提示:cdn.mathjax.org即将结束,请查看迁移提示(也许可以为未来的读者更新你的帖子)。
<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!");