javascript - 评估 WebView、Android 上的 javascript 值

标签 javascript android webview handler android-webview

我打开一个网页 View 页面,该页面有

<script type="text/javascript">
  var addToBasketDisabled=false;
  var iPhoneStatus=""; 
  function GetStatus()
  {
    return iPhoneStatus;//Master Pagelerde tanımlı
  }

  var path = "http://www.yemeksepeti.com/App_Themes/Default_tr-TR/images/IPhone/";             
  function PreLoadDisabledButton()
  {
    var image = new Image();   
    image.src=path + "Iphone-button-ekle-pasif.png";
  }

  function DisableAddButton()
  {
    addToBasketDisabled= true;
    var buttonObject = document.getElementById("ctl00_AddToBasket");
    buttonObject.src = path + "Iphone-button-ekle-pasif.png";
  }

  function EnableAddButton()
  {
    addToBasketDisabled= false;
    var buttonObject = document.getElementById("ctl00_AddToBasket");
    buttonObject.src = path + "Iphone-button-ekle.png";
  }

  function OnAddButtonClick()
  {
    if(addToBasketDisabled)
    {
      return false;
    }
    DisableAddButton();
    var validateValue= ValidateInput(); 
    if(!validateValue)
    {
      EnableAddButton();
      return false;
    }
  }
  PreLoadDisabledButton();
</script>

这些 JavaScript 当我按下 WebView 上的按钮时,我必须读取“iPhoneStatus”值并关闭 WebView 屏幕并决定结果。

我在我的 .java 类中编写了这些代码

mWebView = (WebView) findViewById(R.id.webview);

WebSettings webSettings = mWebView.getSettings();
webSettings.setSavePassword(false);
webSettings.setSaveFormData(false);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportZoom(false);

mWebView.setWebChromeClient(new MyWebChromeClient());

mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");

mWebView.loadUrl(feedurl);
final class DemoJavaScriptInterface
{

  DemoJavaScriptInterface()
  {
  }

  public void clickOnAndroid()
  {
    mHandler.post(new Runnable()
    {
      public void run()
      {
        mWebView.loadUrl("javascript: GetStatus()");
      }
    });
  }
}

final class MyWebChromeClient extends WebChromeClient
{
  public void onCloseWindow(WebView window)
  {
    window.destroy();
  }
  public boolean onJsAlert(WebView view, String url, String message, JsResult result)
  {
    Log.i("log ", message);
    result.confirm();
    return true;
  }
}

但是它从来没有进入onJsAlert方法,有什么方法可以评估GetStatus()的值

谢谢

最佳答案

第 1 步:让您的 demo 对象实现一些接受 GetStatus() 值作为参数的方法。

第 #2 步:调用 mWebView.loadUrl("javascript:..."),其中 ... 是 URL 编码的 Javascript 源代码 fragment 调用 GetStatus() 并将该值传递给您的 demo 对象。

关于javascript - 评估 WebView、Android 上的 javascript 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4149371/

相关文章:

javascript - 使用 jQuery Ajax 成功时显示脚本

java - 来自深层链接的空查询参数

ios - 通过PrepareForSegue传递数据时遇到问题

android - 如何在 Android 的 Webview 中加载文本?

android webview 打不开url 但手机浏览器可以打开

javascript - 使用 ajax/Javascript 动态验证用户选择

javascript - 带有自定义文件名和扩展名的 Google 图表下载

javascript - 通过 ssl 调用 Javascript 函数

Gradle 中的 Java 8 构建错误

android - 如何从 sqlite 游标中获取列值?