`
wenxin2009
  • 浏览: 321618 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

UIWebView加载html

    博客分类:
  • ios
ios 
阅读更多

      UIWebView加载html并调用js,html中需动态行进传值,用字符串格式方式动态添加,下面代码中有相关实现.

stringByEvaluatingJavaScriptFromString方法作用是返回运行后js结果,使用请见代码。

//
//  ViewController.h
//  WebViewTest
//  UIWebView加载html并调用js
//  Created by  on 12-10-30.
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController<UIWebViewDelegate>

@property (weak, nonatomic) IBOutlet UIWebView *webView;

@property (strong,nonatomic) NSMutableArray *arrayLanguages;	

#pragma 方法
//创建webView内容方法
- (void)createWebViewContent;
//创建语言界面页
- (NSString*)createLanguagePage;	
//返回运行后js结果
- (void)executeJSFunction:(NSString *)js;

@end

 

//
//  ViewController.m
//  WebViewTest
//
//  Created by  on 12-10-30.
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize webView;
@synthesize arrayLanguages;

- (void)viewDidLoad
{
    [super viewDidLoad];
    arrayLanguages = [[NSMutableArray alloc] initWithCapacity:25];
    [self createWebViewContent];
}

//创建web内容
- (void)createWebViewContent{
	NSString *homePath = [[NSBundle mainBundle] executablePath];
	NSArray *strings = [homePath componentsSeparatedByString: @"/"];
	NSString *executableName  = [strings objectAtIndex:[strings count]-1];	
	NSString *rawDirectory = [homePath substringToIndex:
                              [homePath length]-[executableName length]-1];
	NSString *baseDirectory = [rawDirectory stringByReplacingOccurrencesOfString:@" " 
                                                                      withString:@"%20"];
	NSString *imagePath = [NSString stringWithFormat:@"file://%@/map.png",baseDirectory];	
    NSLog(@"imagePath: %@",imagePath);	
	NSString *htmlFile = [NSString stringWithFormat:@"file://%@/welcome.html",baseDirectory];
	NSLog(@"htmlFile: %@",htmlFile);
    
	NSURL *url = [NSURL URLWithString: htmlFile];
	NSData *fileData = [NSData dataWithContentsOfURL:url]; 
	//NSData *fileData = [NSData dataWithContentsOfFile:htmlFile];
	NSLog(@"fileData: %@",fileData);
	NSString *htmlContent = [[NSMutableString alloc] initWithData:
                             fileData encoding:NSUTF8StringEncoding];
	NSLog(@"htmlContent: %@",htmlContent);
	NSString *langContent = [self createLanguagePage];
    //通过字符串方式还对html进行动态传值
	NSString* string = 
    [NSString stringWithFormat: htmlContent,imagePath,langContent];



    NSLog(@"string:%@",string);
	//Load the HTML String on UIWebView
	[self.webView loadHTMLString:string baseURL:nil];//加载html字符串到UIWebView上(该方法极为重要)


				
	//Adjust position
	CGRect bounds = [[UIScreen mainScreen] bounds];
	int screenWidth =  bounds.size.width;
	int screenHeight =  bounds.size.height;
	self.webView.frame = CGRectMake(0, 20,screenWidth, screenHeight);
	
}

//创建语言显示页
- (NSString*)createLanguagePage{
	
	arrayLanguages = [[NSMutableArray alloc] initWithObjects:
                      @"English",@"Deutsch",@"Français",@"Español",@"Italiano",@"Pусский",@"日本語",@"中文",
                      @"العربية",@"বাংলা",@"ελληνικά",@"हिन्दी",@"한국어",@"Bahasa Indonesia",@"Nederlands",@"Norsk",
                      @"اردو",@"Polski",@"Português",@"Svenska",@"தமிழ்",@"Česky",@"Türkçe",@"Tiếng Việt",@"עברית>",nil];
	
	NSMutableString* string =[[NSMutableString alloc]initWithCapacity:1024];	
	//init a mutable string, initial capacity is not a problem, it is flexible
    
	for(int i = 0; i < [arrayLanguages count]; i++){
		[string appendString:@"<a href=\"javascript:void(0)\" "];
		[string appendString:@"style=\"color:grey;text-decoration: none; "];
		[string appendString:@"font-family:'Helvetica'; font-size:14px;\" "];		
		[string appendString:[NSString stringWithFormat:
							  @" onMouseDown=\"imageClicked('L%d')\">%@</a>",
							  i,[arrayLanguages objectAtIndex:i]]];
	    [string appendString:@"&nbsp;&nbsp;|&nbsp;&nbsp;"];
		if(i%3 == 0)
			[string appendString:@"<br>"];//换行
	}
	
	return string;	    	
	
}

//返回运行后js结果
- (void)executeJSFunction:(NSString *)jsCommand{
	NSString *result = [self.webView stringByEvaluatingJavaScriptFromString:jsCommand];	
	NSLog(@"result:%@",result);
}

//webview开始加载请求
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
    //linking the javascript to call the iPhone control
	NSString *url = request.mainDocumentURL.relativePath;	
	if(url != nil) {
		NSLog(@"url:%@",url);		
		NSArray *strings = [url componentsSeparatedByString: @"/"];
		NSString *token  = [strings objectAtIndex:[strings count]-1];
		NSString *text = @"";		
		if([token hasPrefix:@"L"]){
			int i = [[token substringFromIndex:1] intValue];
			text = [NSString stringWithFormat:@"language:%@ be selected",
                    [arrayLanguages objectAtIndex:i]]; 
		}else{			
			text = [NSString stringWithFormat:@"Area:%@ be selected",token];
		}	
        
        //执行js后,得到html里title内容(通过执行js来获取html中的内容)
        NSString *title = [self.webView stringByEvaluatingJavaScriptFromString:@"document.title"];	
        NSLog(@"title :%@",title);
        NSString *imgSrc = [self.webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('topimage').src;"];	
        NSLog(@"imgSrc :%@",imgSrc);



        
		UIAlertView* alert=
		[[UIAlertView alloc]initWithTitle:@"javascript message" 
								  message:text 
								 delegate:self 
						cancelButtonTitle:@"Cancel" otherButtonTitles:nil];
		[alert show];
		return FALSE;		
	}		
	return TRUE;
}

@end
 

welcome.html

<html>
<head>
<meta name = "viewport" content = "initial-scale = 1.0, user-scalable = no, width = 320"/>
<title>How to build an iPhone website</title> 
<script>
function imageClicked(i){
    var clicked = true;	 
	var str = ""+i;
	if(str.charAt(0) != 'L'){
	     var id = 'area' + i;
	     var el = document.getElementById(id);		 
	}   
    alert("调用js : "+i);
	window.location="http://click/"+i;   
}  

function printStr(str){
    
    return str;     
}
</script>
<style type="text/css">
.borderImage {
      -webkit-tap-highlight-color:rgba(0,0,0,0);
}       
</style> 
</head>
<body style="background-color: transparent;margin-top:0px;margin-left:0px">
<center>
<div class="borderImage">
<img id="topimage" src="%@


" border="0" height="241" width="319" usemap="#map">
<map name=map>
<area shape="rect" id="area0" coords="124,1,191,58" href="javascript:imageClicked(0)" />
<area shape="rect" id="area1" coords="36,64,97,110" href="javascript:imageClicked(1)" />
<area shape="rect" id="area2" coords="119,135,171,182" href="javascript:imageClicked(2)" />
<area shape="rect" id="area3" coords="205,26,248,60" href="javascript:imageClicked(3)" />
<area shape="rect" id="area4" coords="264,88,306,132" href="javascript:imageClicked(4)" />
<area shape="rect" id="area5" coords="272,154,313,199" href="javascript:imageClicked(5)" />
<area shape="rect" id="area6" coords="187,125,232,172" href="javascript:imageClicked(6)" />
<area shape="rect" id="area7" coords="255,1,285,26" href="javascript:imageClicked(7)" />
<area shape="rect" id="area8" coords="283,1,314,26" href="javascript:imageClicked(8)" />
</map>
</div>

%@



</center>
</body>
</html>

 

完整工程请见附件!

 

 

分享到:
评论

相关推荐

    UIWebView中加载本地图片

    现在,当UIWebView加载HTML时,它会查找并显示指定的本地图片。如果在加载过程中遇到问题,如图片路径错误或图片格式不支持,UIWebView将不会显示图片。 总结起来,加载本地图片到UIWebView的关键步骤包括:确保...

    UIWebView+html+css

    1. 创建UIWebView实例:首先,在 storyboard 或代码中创建UIWebView对象,并将其添加到视图层次结构中。 2. 设置代理:为了监听网页加载的进度和状态,我们需要设置UIWebView的代理,遵循`UIWebViewDelegate`协议。 ...

    UIWebView的使用代码

    默认情况下UIWebView加载HTML页面后,会以页面的原始大小进行显示,亦即如果页面的大小超出UIWebView视口大小,UIWebView会出现滚动效果,而且用户只能通过滚动页面来查看不同区域的内容,不能使用手指的捏合手势来...

    IOS--UIWebView加载进度条(NJKWebViewProgress)

    本教程将围绕"IOS--UIWebView加载进度条(NJKWebViewProgress)"这一主题进行讲解。 NJKWebViewProgress 是一个开源库,由Nick Jones(njkolko)开发,它为UIWebView提供了加载进度条的功能。这个库通过拦截请求和...

    iPhone开发之UIWebView示例程序

    2. **UIWebView的创建与布局**:在视图控制器的视图加载完成时,我们需要创建UIWebView对象并将其添加到视图层次结构中。这通常在`- (void)viewDidLoad`方法中进行。设置其frame以确定在屏幕上的位置和大小,例如`...

    UIWebViewDemo

    `UIWebView`是苹果提供的一个原生控件,允许开发者在应用程序内部加载和显示HTML内容,从而实现网页浏览功能。在iOS开发中,它是一个非常实用且常见的组件,尤其在需要在应用内嵌入网页或者展示网络内容时。 首先,...

    UIWebView和js交互

    UIWebView可以通过代码或Storyboard添加到项目中。创建实例后,可以通过`loadRequest:`方法加载URL请求,或者使用`loadHTMLString:baseURL:`加载本地或远程的HTML字符串。例如: ```swift let webView = ...

    cocos2d-x 学习日志(2)之使用UIWebView加载网页

    下面我们将详细讲解如何在cocos2d-x中使用UIWebView加载网页。 1. **创建UIWebView对象** 在C++代码中,你需要先创建一个UIWebView对象。这通常在你的场景(Scene)类的初始化方法中完成。例如: ```cpp auto ...

    UIWebView使用

    2. 性能:UIWebView加载网页时会消耗大量内存和CPU资源,因此在不需要时应将其移除以释放资源。此外,WKWebView在处理复杂网页时性能更优。 五、替代方案:WKWebView 由于UIWebView存在性能和安全问题,苹果推荐...

    IOS UIWebView Demo

    2. **初始化UIWebView**:在iOS应用中,你需要先创建UIWebView的实例,然后将其添加到视图层次结构中。这通常在视图控制器的`viewDidLoad`方法中完成。 3. **加载URL**:你可以使用`loadRequest:`方法加载指定URL的...

    UIWebView实现图文混排

    而在iOS应用中,我们可以通过UIWebView加载自定义的HTML内容来实现这一效果。 步骤一:创建HTML模板 要实现图文混排,我们需要创建一个包含文字和图片的HTML模板。这个模板可以包含一个`&lt;body&gt;`标签,其中包含多个`...

    UIWebView的使用

    UIWebView是UIKit框架的一部分,它提供了一个可以加载和显示HTML、CSS、JavaScript等Web内容的视图。在你的项目中,你可能用它来加载远程或本地的网页,或者作为应用内展示动态内容的一种方式。下面,我们将深入探讨...

    IOS下 内嵌 HTML编辑器 Objective-C与JavaScript数据交互

    1. 使用UIWebView加载HTML编辑器页面。 2. 通过`stringByEvaluatingJavaScriptFromString:`执行JavaScript代码获取或设置编辑器内容。 3. 实现`UIWebViewDelegate`,监听JavaScript调用原生方法的事件。 4. 设计通信...

    UIWebView Demo代码

    UIWebView是UIKit框架的一部分,它允许iOS应用加载和显示HTML、CSS和JavaScript内容。开发者可以使用它来嵌入网页或者实现与网络服务的交互。 2. **初始化与添加到视图** 首先,你需要创建一个UIWebView实例,...

    Demo.zip_DEMO_iphone_uiwebview_uiwebview demo_uiwebview video

    这里的`loadHTMLString:baseURL:`方法用于加载HTML字符串到UIWebView,`baseURL`参数可以用来指定HTML资源的根目录,以便于加载相对路径的视频文件。 至于"iphone开发",这表明这个示例是针对iOS设备的,可能包含了...

    UIWebView和js交互demo1

    首先,我们需要创建一个UIWebView实例,然后通过`loadRequest:`方法加载URL请求或`loadHTMLString:baseURL:`方法加载HTML字符串。设置`UIWebViewDelegate`代理可以监听网页加载状态,如加载开始、完成、失败等事件。...

    网页视图 UIWebView

    这个组件允许开发者在不离开应用的情况下加载和显示HTML、CSS和JavaScript等Web资源,为用户提供了丰富的交互体验。在本文中,我们将深入探讨UIWebView的基本使用,包括网络资源地址字符串的处理以及UIWebView的属性...

    IOS中使用UIWebView 加载网页、文件、 html的方法

    本文将深入探讨如何在iOS中使用UIWebView加载网页、文件以及HTML。 首先,UIWebView作为iOS SDK中的一个视图控件,它的主要功能就是加载和显示网页数据。你可以通过两种方式创建一个UIWebView:一是通过Storyboard...

Global site tag (gtag.js) - Google Analytics