0

我打开该页面具有的 webview 页面

<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() 的值

谢谢

4

1 回答 1

3

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

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

于 2010-11-11T01:43:00.053 回答