【问题标题】:Inject a JavaScript API on everypage loaded on WebView在 WebView 上的每个页面加载器上注入 JavaScript API
【发布时间】:2012-11-23 21:10:17
【问题描述】:

我正在编写离线 Scorm 播放器,因此需要在 WebView 实例加载的每个 html 页面上注入 JavaScript API。 我尝试使用框架集方法,但 WebView 的行为方式不应该(除此之外,它在 HTML5 中已弃用)。 我怎样才能做到这一点?我需要在页面加载之前注入脚本,因为那些 html 页面会消耗 body onLoad 事件上的 API..

当试图覆盖'onPageStarted' WebViewClient 方法时,虽然触发了事件,但无法到达注入的JS代码。

提前致谢, 巴勃罗

【问题讨论】:

  • 我也需要这个解决方案。如果你有解决方案,请发布这个答案。

标签: android android-webview scorm


【解决方案1】:

您可以使用以下代码注入 javascript everpageload,希望对您有所帮助

final WebView webview = (WebView)findViewById(R.id.webView1);  
        /* JavaScript must be enabled if you want it to work, obviously */  
        webview.getSettings().setJavaScriptEnabled(true);  

        /* WebViewClient must be set BEFORE calling loadUrl! */  
        webview.setWebViewClient(new WebViewClient() {  
            @Override  
            public void onPageFinished(WebView view, String url)  
            {  

                webview.loadUrl("javascript:myFunction()");  
            }  
        });  

        webview.loadUrl("http://code.google.com/android"); 

HTML 

<!DOCTYPE html>
<html>
<head>
<script>
function myFunction()
{
   alert("Hello World!");
}
</script>
</head>

<body>
<button onclick="myFunction()">Try it</button>
</body>
</html>

【讨论】:

  • body标签的onLoad事件会消耗注入的JS,所以脚本一定有
  • 您可以从 webview 调用该函数。你可以看看代码,我编辑了。
猜你喜欢
  • 2016-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多