我覺得寫的還不錯
我們先來說說 Javascript 去 呼叫Objective-c 的function
在javascript網頁建立一個HTML檔,
<!DOCTYPE html>
<html>
<head>
<script>
function callObjFunction()
{
var jsParam = "paramFromJs";
window.location = 'js-call:runObjMethod:';
}
</script>
</head>
<body>
<button onclick="callObjFunction()">call obj function</button>
</body>
</html>
然後在我們的xcode裡objective-c 建立被呼叫的function
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *urlString = request.URL.absoluteString;
// 判斷點下的網址是否有js-call,更精確應該再比對切出來的字串是否有runObjMethod
if( [urlString hasPrefix:@"js-call:"])
{
[self runObjMethod];
return NO;
}
return YES;
}
-(void) runObjMethod
{
NSLog(@"this is objective-c method");
}
p.s. 如果你要javascript帶傳參數到objective-c的話,就js-call:param1:param2
然後去parse出param1,param2的內容就可以~
若要回傳參數的話(objective -> javascript)
我們先把原本的HTML的javascript 內新增
function jsFunction(str)
{
alert("this is javascript alert! -> obj2 pass value to js show:"+str);
}
在objective-c內的runObjMethod function下加入
// 方法1
NSString *myval = @"my parameters from objective-c";
// javascript 的function 名稱 與obj變數組合成字串
NSString *jsMethod = [NSString stringWithFormat:@"%@%@%@", @"jsFunction('", myval, @"')"];
[_myWebView stringByEvaluatingJavaScriptFromString:jsMethod];
// 或
// 方法2
[_myWebView stringByEvaluatingJavaScriptFromString: [NSString stringWithFormat:@"jsFunction('%@')",myval ]];
這樣就可以將objective-c的參數 傳到UIWebview裡面的網頁囉~
8 則留言:
請問JavaScript 帶參數傳入obj-c的部分
不太懂怎麼使用
可以+入範例嗎?
非常感謝^^
請問你的問題出在哪裡?或提出你問題的檔案我有時間的話可以再幫你看
寫的不錯
謝謝
p.s. 如果你要javascript帶傳參數到objective-c的話,就js-call:param1:param2 然後去parse出param1,param2的內容就可以~ 若要回傳參數的話(objective -> javascript) 我們先把原本的HTML的javascript 內新增
不好意思 這一段看的很模糊 請問大大有範例嘛!?
解決問題了嗎?
hi
如果這在background有作用那就更厲害了
不過ui 在app進入 background應該都是pause狀態才對
所以javascript的轉址, 在background 時 webview應該無法捕捉得到 ,純屬猜測有空來玩玩
張貼留言