2012-03-06 99 views
0

我正在我的应用程序中加载一个childbrowser,当我点击一个链接时,onLocationChange被调用两次。有关为什么会发生这种情况的任onLocationChanged调用两次

javascrpt代码是

function openAppTerms() { 
     var options = { 
      'showLocationBar' : true, 
      'pageDesc':'Application Terms' 
    }; 
     window.plugins.childBrowser.onLocationChange=function(newurl){ 

      if(newurl == "no") { 
      } 
      else if(newurl.indexOf("mailto")>=0){ 
       var succcallback = function(result) { 
        //alert("Mail sent"); 
        window.plugins.childBrowser.close(); 
       }; 
       var errorcallback = function(e) { 
        //alert("error:" + e); 
        window.plugins.childBrowser.close(); 
       }; 
       window.plugins.webintent.sendEmail({ 
        mailSubject : 'CPS Mobile App', 
        mailRecepients: '[email protected]', 
        //mailBody: href1 
        mailBody: ' ' 
       }, succcallback, errorcallback); 
       window.plugins.childBrowser.close(); 
      } 
      else { 
       alert(newurl); 
      } 
     }; 
    window.plugins.childBrowser.showStaticPage("app_terms.html",options); 

} 

和Java代码是:

@Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      super.onPageStarted(view, url, favicon);    
      String newloc; 
      if (url.startsWith("http:") || url.startsWith("https:") || url.startsWith("mailto:")) { 
       newloc = url; 
      } 
      else 
      { newloc = "no";} 


      try { 
       JSONObject obj = new JSONObject(); 
       obj.put("type", LOCATION_CHANGED_EVENT); 
       obj.put("location", newloc); 

       sendUpdate(obj, true); 

      } catch (JSONException e) { 
       Log.d("ChildBrowser", "This should never happen"); 
      } 
     } 

回答

0

相信super.onPageStarted(视图,URL,图标);是这个原因。

+0

我试着删除那段代码。但它力量有所作为。 – Khush 2012-03-06 05:59:49