2011-03-24 30 views
4

我不明白爲什麼這不起作用。我有一個TEST.HTM文件坐在我的桌面看起來像這樣的:WebView不運行loadHTMLString中給出的JavaScript

<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 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的用‘\’和「替換‘後

被替換成’ \'',JavaScript無法運行,而我只是看到純文本這是$ x^2 $,沒有通過MathJax呈現$ x^2 $。

是否有一些祕密,「沒有真正的webview,請執行JavaScript的我」命令,我失蹤了?

+0

未來的注意事項:cdn.mathjax.org即將結束生命週期,請查看https://www.mathjax.org/cdn-shutting-down獲取遷移提示(也許可以爲將來的讀者更新您的文章)。 – 2017-04-21 07:50:06

回答

3

好吧,我「解決了」這個問題。出於某種原因,Web視圖不喜歡我的baseURL是file:///。當我將它設置爲http://www.google.com時,一切正常。我不明白傳遞它的文件是什麼錯誤:///。另外使用

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

沒有工作,但這可能是因爲該包中沒有blank.htm。

+0

這也不會工作:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]] – jcb 2011-03-24 18:39:50

+0

[NSURL URLWithString:@「http:// localhost /」]的作品,所以我現在就把它留在那。我真的不需要這個應用程序的工作基地網址。 – jcb 2011-03-24 18:41:07

+0

既不使用'[NSURL URLWithString:@「http://www.google.com」]也不使用[NSURL URLWithString:@「localhost /」]'作爲基礎字符串正在爲我工​​作。還有什麼你發現這個問題? – zakdances 2013-10-18 01:11:53

0

我有同樣的問題,我的解決方案是將javascript嵌入到html文件中。當我在一個單獨的JavaScript文件中,然後由於某種原因,它拒絕運行JavaScript。 JavaScript文件包含在xcode項目中。

還想知道爲什麼單獨的JavaScript文件不起作用,有什麼想法?

0

我也有同樣的問題。 我解決了這個問題,通過在文件夾中保存「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!"); 

我希望,它爲你的作品!

+0

我無法得到這個工作。你能看看我的代碼嗎? HTTP://計算器。COM /問題/ 32921577/UIWebView的,不加載,JavaScript的正確 - 嵌入Facebook的職位 – Percolator 2015-10-03 20:28:49

相關問題