在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版本。
答案 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>