有誰知道你是否可以在iPhone上以編程方式打開.webarchive? .webarchive是Safari打包網頁的方式,它將相關資源合併到單個文件中。在iphone上打開.webarchive?
我試圖創建一個和瀏覽的鏈接,一個在移動Safari瀏覽器,但它沒有工作....
注:我是那種希望這能不經第三方應用程序來完成,因爲這將是一個很好的方式來打包Web應用程序而不需要第三方工具。
有誰知道你是否可以在iPhone上以編程方式打開.webarchive? .webarchive是Safari打包網頁的方式,它將相關資源合併到單個文件中。在iphone上打開.webarchive?
我試圖創建一個和瀏覽的鏈接,一個在移動Safari瀏覽器,但它沒有工作....
注:我是那種希望這能不經第三方應用程序來完成,因爲這將是一個很好的方式來打包Web應用程序而不需要第三方工具。
iOS支持webarchive。只需將其加載到UIWebView。它只是工作!
裝載在你的包一webarchive,只是做
NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"myFile"
withExtension:@"webarchive"];
[webView loadRequest:[NSURLRequest requestWithURL:fileURL]];
的WebView是你的UIWebView
iPhone上的AirSharing會打開webarchive文件,但我不知道他們是自己做的還是使用本地webarchive支持。
注:我有種希望它可以在沒有第三方應用程序來完成,因爲它會是打包的HTML + JavaScript進行一個Web應用 – 2008-10-22 19:08:24
一個.webarchive只是一個plist中;從理論上講,你可以使用NSPropertyListSerialization來讀取它,然後在手機上建立一個本地文件結構,然後將其抽成一個UIWebView。或使用AirSharing。
擴大一點就以上這些建議,如果你只是想抓住的HTML,下面的代碼片段可能是一個很好的起點。通過檢查webMainResource字典,您還可以提取其他材料,例如圖像。
#define WEB_ARCHIVE @"Apple Web Archive pasteboard type"
- (NSString*) htmlStringFromPasteboard;
{
NSData* archiveData = [[UIPasteboard generalPasteboard] valueForPasteboardType:WEB_ARCHIVE];
if (archiveData)
{
NSError* error = nil;
id webArchive = [NSPropertyListSerialization propertyListWithData:archiveData options:NSPropertyListImmutable format:NULL error:&error];
if (error)
{
return [NSString stringWithFormat:@"Error: '%@'", [error localizedDescription]];
}
NSDictionary* webMainResource = [webArchive objectForKey:@"WebMainResource"];
NSData * webResourceData = [webMainResource objectForKey:@"WebResourceData"];
NSString* string = [[NSString alloc] initWithData:webResourceData encoding:NSUTF8StringEncoding];
return [string autorelease];
}
return @"No WebArchive data on the pasteboard just now";
}
一個很好的方式,這並非總是如此。你知道哪個版本的iOS增加了對此的支持嗎? – Jim 2011-07-06 15:58:07