我正在尝试制作一个iPhone应用程序。在那个应用程序中,我正在使用Javascript。我想知道从Javascript调用目标C函数函数是可能的。如果是,那么我们该怎么做呢?如果没有,那么还有其他选择吗?
谢谢阿坎沙
我有这个java脚本代码。因此,每当我输入"onPlayerStateChange"功能时,我都想打开一个文件并在此文件中写入一些事件。但是我无法在javascript中打开和写入文件,因为我不知道文件的位置。使用 objective-c,我可以在 documentsDirectory 中打开和写入数据,但我不确定 javascript。所以我想在"onPlayerStateChange"中调用一个函数,该函数位于 objective-C .m 文件中。每当我输入"onPlayerStateChange"函数时,该函数都会写入文件。
现在可以提出任何建议吗?
<!DOCTYPE HTML>
<html>
<body>
<div id="player"></div>
<script>
//Load player api asynchronously.
var tag = document.createElement('script');
tag.src = "http://www.youtube.com/player_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var done = false;
var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player('player', {
height: '390',
width: '640',
videoId: 'JW5meKfy3fY',
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
function onPlayerReady(evt) {
evt.target.playVideo();
}
function onPlayerStateChange(evt) {
if (evt.data == YT.PlayerState.PLAYING && !done) { // NEED TO ADD FILE OPERATION HERE
setTimeout(stopVideo, 6000);
done = true;
}
}
function stopVideo() {
player.stopVideo();
}
</script>
</body>
</html>
是的,您可以使用 HTML/JS 上下文和
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
您可以捕获请求并调用 OBJ-C 方法。或者您创建与Appcelerator相同的解决方案:https://stackoverflow.com/a/2471774/644629
像在JAVA/ANDROID中那样直接做到这一点。参考下面的答案
iOS UIWebView Javascript - insert data - receive回调?
你可以创建一个目标 c 模块并将其导入到你的应用程序中,然后从 JavaScript 调用它。这是你要找的吗:
http://developer.appcelerator.com/doc/mobile/iphone/module_sdk