2011-10-14 84 views
1

我有一個格式良好的html文件,我們稱它爲index.html。它在應用程序包中。該文件包含鏈接到CSS樣式表和本地JavaScript文件。如果我使用iOS UIWebView和javascript

[self.ourWebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]isDirectory:NO]]]; 

所有的JavaScript/CSS的項目在檔案工作就好了。

然而,如果我讀文件的內容轉換成字符串(和更新字符串逃過「和/項),然後使用

[ourWebView loadHTMLString:HTMLString baseURL:nil]; 

的HTML標記被呈現,但沒有任何的JavaScript/CSS被兌現或執行。

我甚至試圖從已知的好文件讀取,改寫在Documents目錄中另一個文件,然後使用的loadRequest加載它。這並不要麼執行JavaScript。

上午我錯過了明顯的東西?

感謝, 肯

+0

我做到了這一點,以及和它仍然沒有有所作爲。 – macgeezer

+0

您需要傳遞的確切值取決於您的javascript/css文件在捆綁包中的位置。 – albertamg

+0

我在文檔目錄中創建了一個名爲myDir的目錄,其中包含所有JavaScript文件。然後這段代碼 - 哪個不起作用NSString * documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)objectAtIndex:0]; filePath = [documentsDirectory stringByAppendingFormat:@「myDir」]; NSURL * fileURL = [NSURL fileURLWithPath:filePath]; [self.ourWebView loadHTMLString:thisString baseURL:fileURL]; – macgeezer

回答

1

(以上我的意見混搭)你聲稱:

的HTML標記被呈現,但沒有任何的JavaScript/CSS的被尊敬或執行。使用

下面的代碼:

[ourWebView loadHTMLString:HTMLString baseURL:nil]; 

您需要將相應的值傳遞給baseURL參數而不是nil。這個值取決於你的javascript/css文件在bundle中的位置。


後來,在評論,你說:

我已經創建了名爲MYDIR的文件目錄的目錄,其中包含所有的JavaScript文件。

而且你已經修改了代碼如下(從您的意見採取):

NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
filePath=[documentsDirectory stringByAppendingFormat:@"myDir"]; 
NSURL *fileURL = [NSURL fileURLWithPath:filePath]; 
[self.ourWebView loadHTMLString:thisString baseURL:fileURL]; 

要創建的路徑看起來不正確的方式。 NSString有許多使用路徑的方法。使用它們。

替換:

filePath=[documentsDirectory stringByAppendingFormat:@"myDir"]; 

與此:

filePath=[documentsDirectory stringByAppendingPathComponent:@"myDir"];