我有一个网站(www.myexamplewebsite.com)看起来简化如下:

<html>
<head>
</head>
<body>
  <img src="img/speaker-icon.png" onclick="speakerFunction()">
<script>
  function speakerFunction() {
     var text = new SpeechSynthesisUtterance("This is a test.");
     text.lang = 'en-US';
     window.speechSynthesis.speak(text);
    }
</script>
</body>
</html>

我还有一个简单的Android应用程序,它基本上是一个显示我的网站的webview:
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WebView myWebView = (WebView) findViewById(R.id.myWebView);
        myWebView.loadUrl("www.myexamplewebsite.com");
        myWebView.setWebViewClient(new MyWebViewClient());
        WebSettings webSettings = myWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
    }

    // Use when the user clicks a link from a web page in the WebView
    private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (Uri.parse(url).getHost().equals("www.myexamplewebsite.com")) {
                return false;

            }

            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            startActivity(intent);
            return true;
        }
    }
}

我的问题是:
当我用普通浏览器(Chrome浏览器、Firefox浏览器)在我的台式机上访问示例网站时,它的工作原理应该是怎样的。如果我点击网站上的图片,我可以听到文字“这是一个测试”
如果我在我的智能手机上访问带有Android版Chrome应用程序的示例网站,它也可以工作。但如果我使用Firefox应用访问网站,或者使用webview访问我自己的应用(见上文),那么它就不起作用。
更新1:
我明确地指定了语言,并用crosswalk框架进行了尝试,但这也不能解决问题。

最佳答案

android webview不支持SpeechSynthesisUtterance
https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance
虽然支持SpeechSynthesis,但是由于SpeechSynthesis是基于传入的SpeechSynthesis对象工作的,所以它不会全部工作。
https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis

09-25 21:03