Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在android中从webview中提取单个变量?_Javascript_Android_Webview - Fatal编程技术网

Javascript 在android中从webview中提取单个变量?

Javascript 在android中从webview中提取单个变量?,javascript,android,webview,Javascript,Android,Webview,使用webview时,我需要从隐藏的div标记中提取一个值。我在webview活动中启用了javascript,但它不喜欢“”。我怎样才能实现我的目标 public class buttonOne extends Activity{ WebView wb = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState)

使用webview时,我需要从隐藏的div标记中提取一个值。我在webview活动中启用了javascript,但它不喜欢“”。我怎样才能实现我的目标

public class buttonOne extends Activity{

 WebView wb = null;

 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.buttons);
  wb = new WebView(this);
  wb.getSettings().setJavaScriptEnabled(true);
  wb.setWebViewClient(new HelloWebViewClient());
  wb.getSettings().setJavaScriptEnabled(true);
  wb.loadUrl("http://ishopstark.com/mobileapp.php?category=1");
  setContentView(wb);

 }

 private class HelloWebViewClient extends WebViewClient {

  public boolean shouldOverrideUrlLoading(WebView view, String url) {
   view.loadUrl(url);
   <script type="text/javascript">
     {
        var varSendText = document.getElementById("sendtextcoupon").value;  
     }
     </script>

   return true;
  }
 }
公共类按钮无扩展活动{
WebView wb=null;
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(右布局按钮);
wb=新的网络视图(本);
wb.getSettings().setJavaScriptEnabled(true);
setWebViewClient(新的HelloWebViewClient());
wb.getSettings().setJavaScriptEnabled(true);
wb.loadUrl(“http://ishopstark.com/mobileapp.php?category=1");
setContentView(wb);
}
私有类HelloWebViewClient扩展了WebViewClient{
公共布尔值shouldOverrideUrlLoading(WebView视图,字符串url){
view.loadUrl(url);
{
var varSendText=document.getElementById(“sendtext优惠券”).value;
}
返回true;
}
}

下面是一个简短的示例,说明如何使用


如果你真的想得到这个值并在Java代码中使用它,你必须注册一个JavascriptInterface,如本例所示-

你必须转义它吗?\“text/javascript\”好的,我想我很接近了。但是我如何从函数中获取变量呢?wb.setWebViewClient(new WebViewClient(){@Override public void onPageFinished(WebView视图,字符串url){String varSendText=null;wb.loadUrl(“javascript:(function(){“+”var varSendText=document.getElementById('sendText优惠券')。value;“+”})(“+”返回“+”varSendText”);Toast.makeText(button2.this,varSendText,Toast.LENGTH_LONG).show();}}});@Sabanim-您必须注册一个JavascriptInterface回调,如第二个示例所示:编写一个类/方法,调用addJavascriptInterface()在webView上,传入您创建的类和一个变量以在Javascript中调用它,然后在webviewClient.onPageFinished()方法中,使用您在addJavascriptInterface()中创建的变量在上面,调用您创建的方法,并将变量传递给您想要访问的对象。好的。我想我正在接近理解的程度。我的示例正在运行。这就是我从网页[browser.loadUrl(“javascript:window.HTMLOUT.showHTML(“”+document.getElementsByTagName('html')[0]。innerHTML+“”);”)中选择要读取的内容的地方;]但我似乎可以修改它,只给我该页面上隐藏标记的值。我只能让它给我警报框中的完整页面。不应该是“document.getElementById('id of tag')。value“work?@Sabanum-是的,在警报框中显示完整页面源代码是示例所做的…如果替换“document.getElemen”‌​tsByTagName('html')[0].innerHTML'在带有'document.getElementById('tag的id').value'的示例中,它应该在警报框中显示该值。除非它无法获取任何值,否则警报框将不会显示(因为消息为空)。