stringByEvaluatingJavaScriptFromString无法在UIWebview上停止html5视频

时间:2013-05-15 22:50:42

标签: ios objective-c uiwebview

我正在尝试使用以下语句为UIWebview元素停止html5视频

[webView stringByEvaluatingJavaScriptFromString: @"document.querySelector('video').pause();"];

但它对我不起作用。我尝试了带有onclick事件的javascript代码并且它可以工作。

这里是objective-c代码

(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
// encode the string
NSString * result = [[[request URL]absoluteString]
                     stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

// extract the path components from the result string
NSArray *pathElements = [[NSArray alloc] initWithArray:[result pathComponents]];

// when click the a tag the video should stop 
if([pathElements[[pathElements count] -1] isEqualToString:@"tester"]){
    [webView stringByEvaluatingJavaScriptFromString: @"document.querySelector('video').pause();"];
    }
}

这里是html5代码

<video width="720px" height="396px" controls="controls" >
        <source src="Video.m4v" type="video/mp4">
</video>
<!-- a tag only for test purpose -->
<p><a href="/tester" target="_blank">TESTLINK</a></p>

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在页面加载之前调用shouldStartLoadWithRequest,它会询问你是否应该在StartLoadWithRequest

UIWebViewDelegate Protocol Reference

  

web视图:shouldStartLoadWithRequest:navigationType:

     

在网页视图开始加载框架之前发送。

所以你可能需要一个Button和一个工具栏,或者在页面加载后触发一个方法来执行代码的方法,你也应该确保“document.querySelector('video')”实际返回调用时的视频标记。