2015-04-01 79 views
1

我在使用onPageFinished方法在页面上正确运行一些JS时遇到了一些问题。在Android WebView中运行Javascript - onPageFinished循环

下面的代码包含在我创建的类中,它扩展了AsyncTask来获取和解析其他地方保存的JSON文件。

我能够正确获取JSON文件,解析数据并获取并设置WebView的URL。一切工作负载,因为它应该直到我试图运行一些JS onPageFinished方法。

 //onPostExecute method runs when the doInBackground method is completed 
    @SuppressLint("SetJavaScriptEnabled") 
    @Override 
    protected void onPostExecute(Boolean aBoolean) { 
     super.onPostExecute(aBoolean); 

     //Casting as WebView as findViewById doesnt explicity return a value type. 
     webView = (WebView) findViewById(R.id.webView); 

     //Obtaining the websettings of the webView 
     WebSettings webViewSettings = webView.getSettings(); 

     //Setting Javascript enabled 
     webViewSettings.setJavaScriptEnabled(true); 

     webView.setWebViewClient(new webViewClient(){ 
      @Override 
      public void onPageFinished(WebView view, String url) { 
       super.onPageFinished(view, url); 


       webView.loadUrl("document.getElementById('field_133').value = 'Test';"); 
       Log.d("onPageFinished", "The Page has finished loading"); 

      } 
     }); 

     //Obtaining the first item in the cellRef List Array - From here we will access the Url data for the train operator. 
     parsedUrl = cellRef.get(0).getUrl(); 

     //load the page we parsed from online file 
     webView.loadUrl(parsedUrl); 
     Log.d("loadUrl", "Now load the parsed Url"); 



    } 

所有我期待在此刻要做的就是测试的JS能够正确填充一个文本框一旦页面加载了“测试”的价值 - 但是,WebView中似乎停留在循环装载&试图运行时刷新(看到的“页面加载完成”重复打印logcat中):

webView.loadUrl("document.getElementById('field_133').value = 'Test';");

这是试图一些JS注入在Android中的WebView正确的方法是什么?道歉,如果有明显的缺失,我的经验大部分在于斯威夫特。

任何帮助,将不胜感激。

谢谢

回答

0

尝试“javascript:”之前的代码。 我用这个,完美的作品:

loadUrl("javascript:(function() { document.getElementsByTagName('video')[0].play(); })()"); 
+0

这看起来已经停止了“循环”,但现在我在正确的网址短暂(约0.5秒)所示的页面,那么它显示一个白色的屏幕,“测试'在WebView的左上角。是否有一种休息条款,您需要以与您脱离开关相同的方式加入? – 2015-04-01 15:57:25