UIWebView 拦截来自 javascript 音频播放器的“设置电影路径:”

Posted

技术标签:

【中文标题】UIWebView 拦截来自 javascript 音频播放器的“设置电影路径:”【英文标题】:UIWebView intercept "setting movie path:" from javascript audio player 【发布时间】:2010-11-05 15:11:37 【问题描述】:

ios 4 中,我在带有 javascript 音频播放器的 UIWebView 中加载了一个页面。我没有创建这个播放器,它归第三方所有,所以我无法修改它。当我点击播放按钮时,我会看到如下 NSLog 打印输出:

setting movie path: http://data.myaudio.com/thefile.mp3

我的问题是,什么是设置它的电影路径以及如何拦截它?音频将继续播放,直到我创建另一个 UIWebView,或使用 iPhone 主页按钮双击可访问的内置音频控件,或关闭应用程序。我无法用shouldStartLoadWithRequest: 拦截路径,javascript 函数audio.play() 似乎直接调用了一些内置播放器。我想控制音频的播放位置和方式,但由于没有解析任何<audio> 标签的 html,我不知道如何获取该路径并将其指向默认值以外的位置。

【问题讨论】:

【参考方案1】:

UIWebView 本质上是 WebKit 的包装器。除了现有委托方法提供的内容之外,Apple 不希望您触及任何其他内容。

话虽如此,您可以通过注入 JavaScript 来修改任何已加载文档的 DOM。这样,您还可以修改 audio.play 以不执行任何操作,而是获取 URL 以使用您可以控制的自己的播放器进行播放。

【讨论】:

谢谢,这就是我最终做的! 有没有办法在不使用 JavaScript 的情况下拦截它?实际拦截打印到控制台的内容?

以上是关于UIWebView 拦截来自 javascript 音频播放器的“设置电影路径:”的主要内容,如果未能解决你的问题,请参考以下文章

swift 笔记:iOS与JavaScript的交互(一):UIWebView - 2.1直接使用字符串通过评估Java脚本(来自:)

UIWebView 和 URLRequest 拦截

Hybrid App: 对比UIWebView和WebKit实现JavaScript与Native交互

UIWebView 下一次出现来自搜索问题的单词

在调用 UIWebView 的 loadHTMLString 时拦截和修改资源/url 请求

iOS下JS与OC互相调用--UIWebView 拦截URL