如何在webView中加载HTML页面时候向HTML及嵌套的iframe注入js代码?

在webView中,加载了HTML页面后,由于在js使用一个 new MediaPlayer()实例。所以在Android中需要完成对应的类方法。但是在注入时,会发现无法在HTML的iframe注入实例。也就是说,无法在iframe进行new MediaPlayer();

阅读 1.2k
1 个回答

通过桥接机制: 使用WebView的JavaScript接口(JavaScriptInterface)来桥接Java和JavaScript之间的通信。可以在主页面中定义一个接口方法,然后在iframe中调用这个方法。

例如
// Java代码
public class WebAppInterface {
    @JavascriptInterface
    public void createMediaPlayer() {
        // 创建MediaPlayer实例的逻辑
    }
}

webView.addJavascriptInterface(new WebAppInterface(), "Android");

// HTML/JavaScript代码
<iframe id="myIframe" src="iframe.html"></iframe>
<script>
    var iframe = document.getElementById('myIframe');
    iframe.onload = function() {
        iframe.contentWindow.Android.createMediaPlayer();
    };
</script>