我试图通过目标C调用javascript函数
我遵循的步骤:
在Html页面中:
<!DOCTYPE html>
<html>
<head>
<script>
function init()
{
alert("Hello Contraceptive_Quiz!");
setTimeout(function(){destroy()},1000);
}
function destroy()
{
alert("calling destroy Contraceptive_Quiz!");
}
</script>
</head>
<body>
</body>
</html>
在我使用的 ObjectiveC.m 文件中,
在我的应用包中存在wwwfilePath文件夹:
wwwfilePath结构包含:www / IYG_G8_L05 / IYG_G8_L05_Directory / IYGindex1.html
此处,此结构包含www / IYG_G8_L05 /多个子文件夹
WWW / IYG_G8_L05 / IYG_G8_L05_Directory1
WWW / IYG_G8_L05 / IYG_G8_L05_Directory2
WWW / IYG_G8_L05 / IYG_G8_L05_Directory3
所以,我需要逐个加载html页面中的多个内容
第一次加载 IYG_G8_L05_Directory1 然后接下来就像......
- (void)viewDidLoad{
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"IYGindex1" ofType:@"html" inDirectory:wwwfilePath];
NSURL *htmlurl = [[NSURL alloc]initFileURLWithPath:filePath];
NSURLRequest *request = [NSURLRequest requestWithURL:htmlurl];
[_contentWebView loadRequest:request];
}
在webview委托方法中:
**在目标c **中调用javascript函数
-(void) webViewDidFinishLoad:(UIWebView *)webView {
NSString *jsString = [[NSString alloc] initWithFormat: @"init()"];
[_contentWebView stringByEvaluatingJavaScriptFromString:jsString];
}
这里,init()方法将执行并执行destroy()方法,因为在html页面中调用了setTimeout()函数。
我的问题是:一旦destroy()方法执行,我怎么能加载下一个wwwfilepath,即IYG_G8_L05_Directory2它应该以动态方式调用。
让我们知道如何解决?
答案 0 :(得分:0)
解决方案1: 要动态加载HTML文件的内容,可以尝试使用XMLHttpRequest()进行AJAX调用。
在下面的代码中,url被发送到loadHTMLURL()函数,在该函数中返回加载的内容。
function destroy()
{
alert("calling destroy Contraceptive_Quiz!");
document.createElement("body").innerHTML = loadHTMLURL("IYG_G8_L05_Directory1/NEW_HTML.html");
}
function loadHTMLURL(href)
{
var xmlHTTPObj = new XMLHttpRequest();
xmlHTTPObj.open("GET", href, false);
xmlHTTPObj.send();
return xmlHTTPObj.responseText;
}
我没有运行此代码。所以仔细检查html文件网址并尝试使用您的代码。
================================
解决方案2:
Objective-c代码:
NSTime *timer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(_timerFired:) userInfo:nil repeats:YES];
- (void)_timerFired:(NSTimer *)timer {
NSString *function = [[NSString alloc] initWithFormat: @"destroy(%@)", @"IYG_G8_L05/IYG_G8_L05_Directory1"];
NSString *result = [webView stringByEvaluatingJavaScriptFromString:function];
}
Javascript代码:
function destroy(fileNameWithURL)
{
alert("calling destroy Contraceptive_Quiz!");
document.createElement("body").innerHTML = loadHTMLURL(fileNameWithURL);
}
以上代码可能会对您有所帮助。