0

我正在为 iPhone 制作一个应用程序,并且我正在使用 Javascript 在 UIWebView 中制作嵌入的 youtube。我想从javascript打开/读取/写入一些事件的文件,然后想在objective-c代码中使用该文件。但是我该怎么做呢?我的意思是我可以在什么位置保存和打开文件。

我制作了一个名为 youtubeAPI.html 的文件,并从 Objective-C 代码中调用了该文件。它成功打开页面。现在我想打开一个文件并在每次更改状态时写入内容,然后需要在 obejective-c 的最终结果中显示该文件。请告诉我我该怎么做。

<!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>

谢谢阿坎莎

4

2 回答 2

1
// Get file path
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString filePath = [documentsDirectory stringByAppendingPathComponent:filename];

// Read file contents
NSString *content = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];

// Write file contents
[[content dataUsingEncoding:NSUTF8StringEncoding] writeToFile:filePath atomically:NO];
于 2012-04-17T05:56:17.340 回答
0

UIWebView 是一个沙箱,没有机会这样做,javascript 不能直接访问文件系统,这是我所知道的。但你可以做其他事情。首先:将状态保存到窗口对象中;

such as window.state = "someting";

第二:通过Objective-C读取状态;

NSString *state = [webView stringByEvaluatingJavaScriptFromString:@"window.state"];
于 2012-04-17T07:17:22.947 回答