Childbrowser终止

时间:2012-10-30 22:52:15

标签: objective-c ios xcode cordova phonegap-plugins

在javascript中调用多个函数以获取用户名/电子邮件地址/密码。当一切正常时,去goForLogin()并打开一个chrildbrowser。我得到了错误(见下文):

首先是我的代码:

        function goForLogin(emailaddress, value){
            var xmlhttp;
            xmlhttp=new XMLHttpRequest();
            xmlhttp.open("POST","http://dev.server.com/test/login",true);
            xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
            xmlhttp.send("email=" + emailaddress + "&password=" + value);

            xmlhttp.onreadystatechange=function()
            {
                if (xmlhttp.status==200)
                {

                    value = null;
                    window.plugins.childBrowser.showWebPage('http://dev.server.com');
                } else {
                    alert("FAILED");
                }
            }
        }
  

*由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'应用程序试图呈现   模态地是一个主动控制器。'   * 第一次抛出调用堆栈:(0x154012 0x25fce7e 0x478721 0x479777 0x4797b7 0x6a68 0x67471 0x66c5e 0x67039 0x26106b0 0x1198035 0xd7f3f   0xd796f 0xfa734 0xf9f44 0xf9e1b 0x33be7e3 0x33be668 0x38f65c 0x2366   0x2295)libc ++ abi.dylib:terminate调用抛出异常(lldb)

最新的Cordova和Childbrowser,Xcode 4.4版本。

1 个答案:

答案 0 :(得分:2)

我明白了!由于xmlhttp.onreadystatechange语句,childBrowser将在此脚本中打开三次。苹果不允许 - 抱歉,我忘记了原因 - 所以我回电话了。它看起来像这样:

我的JavaScript:

function some_function2(url, callback) {
      var httpRequest; // create our XMLHttpRequest object
      if (window.XMLHttpRequest) {
          httpRequest = new XMLHttpRequest();
      } else if (window.ActiveXObject) {
          // Internet Explorer is stupid
          httpRequest = new
          ActiveXObject("Microsoft.XMLHTTP");
      }
      httpRequest.onreadystatechange = function() {

          // inline function to check the status
          // of our request
          // this is called on every state change
          if (httpRequest.readyState === 4 &&
             httpRequest.status === 200) {
             callback.call(httpRequest.responseXML);
             // call the callback function
         }
      };
      httpRequest.open('POST', url, true);
      httpRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");
      httpRequest.send("email=test@test.com&password=1");
      }


function call() {
   // call the function
   some_function2("http://dev.server.com/account/login/", function() {
                 console.log(this);
                 callChildBrowser();
                 });
                 console.log("this will run before the above callback");

}


function callChildBrowser(){
    window.plugins.childBrowser.showWebPage('http://dev.server.com');
    }

最后在我的HTML中:

<button id="butten" onclick="call()">WORKS</button>