【问题标题】:run JavaScript in WebView在 WebView 中运行 JavaScript
【发布时间】:2013-12-10 18:50:21
【问题描述】:

我想在 Android 中通过 webview 显示我的网站 但首先我要启动 webView.getSettings().setJavaScriptEnabled(false); ((一开始我不想运行 JavaScript)) 在页面完全加载或 10 秒后程序 webView.getSettings().setJavaScriptEnabled(true);自动地 ((然后我想要runJavaScript)) 我使用 Thread.sleep 但没有用 请帮帮我

这是我的代码

public class Activity1 extends Activity {

    private WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_activity1);
            String url = "http://student.iaun.ac.ir";
            webView = (WebView) findViewById(R.id.webview);

            webView.setWebViewClient(new myWebViewClient());
            webView.getSettings().setJavaScriptEnabled(false);
            webView.getSettings().setLoadWithOverviewMode(true);
            webView.getSettings().setUseWideViewPort(true);
            webView.getSettings().setBuiltInZoomControls(true);
            webView.loadUrl(url);

            new Thread(new Runnable() {
                @Override
                public void run() {
                                  try {
                                        newActivity();
                                  } catch (InterruptedException e) {
                             webView.getSettings().setJavaScriptEnabled(true);     
                                     e.printStackTrace();
                                    }

                        }
            }).start();    

}

void newActivity() throws InterruptedException {
    Thread.sleep(15001);

    startActivity(getIntent());
}

@Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();   
}

           @Override
           public boolean onKeyDown(int keyCode, KeyEvent event)
          {
            if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
                webView.goBack();
                return true;
            }
            return super.onKeyDown(keyCode, event);
           }

}

【问题讨论】:

  • 你为什么把你的setJavaScriptEnabled(true)放在一个catch块里?它不会以这种方式执行。只需将其移到 try 块中的 newActivity(); 行下方即可。
  • 你为什么要重新开始自己的活动?
  • kiruwka:你能写出正确的代码和有效的代码吗

标签: android webview


【解决方案1】:

试试这个

private WebView webView;

@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_activity1);
        String url = "http://student.iaun.ac.ir";
        webView = (WebView) findViewById(R.id.webview);

        webView.setWebViewClient(new myWebViewClient());
        webView.getSettings().setJavaScriptEnabled(false);
        webView.getSettings().setLoadWithOverviewMode(true);
        webView.getSettings().setUseWideViewPort(true);
        webView.getSettings().setBuiltInZoomControls(true);
        webView.loadUrl(url);

        new Thread(new Runnable() {
            @Override
            public void run() {
                              try {
                                    startDelay();
                                    webView.getSettings().setJavaScriptEnabled(true);     
                              } catch (InterruptedException e) {
                                 e.printStackTrace();
                                }

                    }
        }).start();    

}

void startDelay() throws InterruptedException {
    Thread.sleep(10000);
}

我所做的只是将 setJavaScriptEnabled 调用移到 try catch 的 try 部分,并删除了对 startActivity 的调用,因为在 10 秒后重新启动整个活动对我来说没有意义。

不过,比这更好,设置 WebViewClient 并在 OnPageFinished 方法中输入 setJavaScripteEnabled(true)

【讨论】:

  • @user3033953 很高兴为您提供帮助,不要忘记将此答案标记为正确/如果它适合您,请点赞。
猜你喜欢
  • 1970-01-01
  • 2018-10-25
  • 2011-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-22
  • 1970-01-01
  • 2020-12-27
相关资源
最近更新 更多