gpt4 book ai didi

javascript - WebView无法调用JavaScript函数

转载 作者:行者123 更新时间:2023-12-03 08:54:57 25 4
gpt4 key购买 nike

我已经尝试了一切,但仍然不起作用,请帮忙:

我在这里设置我的 WebView:

public class MainActivity extends ActionBarActivity {
private WebView mWebView;
private MyWebViewClient mWebViewClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
mWebViewClient = new MyWebViewClient(context);
mWebView = (WebView) findViewById(R.id.activity_main_webview);
mWebView.addJavascriptInterface(mWebViewClient, "Android");
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setAllowFileAccessFromFileURLs(true);
webSettings.setAllowUniversalAccessFromFileURLs(true);
webSettings.setDomStorageEnabled(true);
mWebView.setWebViewClient(mWebViewClient);
mWebView.loadUrl("file:///android_asset/index.html");
}
}

这是我从 JS 调用函数的地方:

    <script>
$("#logInButton").click(function(){
if(isAndroid){
Android.onJavaLogIn();
}
return false;
});
</script>
<input type="button" value="Log In" id="logInButton" />

这是我的处理方法:

public class MyWebViewClient extends android.webkit.WebViewClient {
private MainActivity context;

public MyWebViewClient(MainActivity context) {
this.context = context;
}
@JavascriptInterface
public void onJavaLogIn(){
context.onMainLogIn();
}

}
public class MainActivity extends ActionBarActivity {
public void onMainLogIn(){
mWebView.loadUrl("javascript:onJSLogIn();");
}
}

这是它应该调用的 JS 函数:

    <script>
function onJSLogIn(){
$("#logInButton").hide();
$("#logOutButton").show();
}
</script>

整个链似乎是正确的,我通过调试验证 MainActivity 中的 onMainLogIn() 确实被调用,但 JS 函数 onJSLogIn() 从未被调用,为什么?

最佳答案

事实证明 WebView 只能在主 UI 线程上工作。所以我不得不像这样扭曲调用函数:

public void onMainLogIn(){
this.runOnUiThread(new Runnable() {
@Override
public void run() {
mWebView.loadUrl("javascript:onJSLogIn();");
}
});
}

关于javascript - WebView无法调用JavaScript函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32543249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com