您好,感谢您抽出宝贵时间阅读此问题。
最近我的JavaScript遇到了一些问题。我目前正在开发Cordova混合移动应用程序,并且我的JavaScript代码可在具有Android和iOS操作系统的iPhone和Google Pixel手持设备上使用。
我的每个应用程序都无法在iPad /平板电脑上运行。我已将问题缩小了范围,而我的JavaScript代码似乎有问题。当我删除所有代码并放一个测试'foo()'函数,输出警告消息时,JavaScript起作用了!
我进一步缩小了范围,删除了所有代码,但留下了一个函数登录应用程序,JavaScript无法正常工作。因此,我猜测这可能是登录方法,也可能是我为所有功能编写JavaScript的方式!
这是代码的一部分:
var isDevice = false;
const appName = 'Evolution Recruit';
const app = {
initialise() {
this.bindEvents();
},
bindEvents() {
document.addEventListener('deviceready', this.onDeviceReady, false);
document.addEventListener('online', this.onDeviceOnline, false);
document.addEventListener('offline', this.onDeviceOffline, false);
},
onDeviceReady() {
isDevice = true;
// addLog("onDeviceReady");
},
onDeviceOnline() {
signOut();
// addLog("onDeviceOnline");
},
onDeviceOffline() {
window.location = 'index.html#/offline';
// addLog("onDeviceOffline");
},
};
function initialise() {
app.initialise();
const firebaseConfig = {
// Removed Firebase credentials
};
firebase.initializeApp(firebaseConfig);
firebase.auth().onAuthStateChanged((user) => {
let auth = firebase.auth().currentUser;
if (user) {
if (auth != null) {
// Signed in
}
} else {
// No user is signed in.
window.location = 'index.html#/signin';
auth = null;
}
});
}
function configureOverlay(flag) {
const arrayOfElements = document.getElementsByClassName('overlay');
const lengthOfArray = arrayOfElements.length;
if (flag === 1) {
for (let i = 0; i < lengthOfArray; i++) {
arrayOfElements[i].style.display = 'block';
}
} else if (flag === 2) {
for (let j = 0; j < lengthOfArray; j++) {
arrayOfElements[j].style.display = 'none';
}
}
}
function sendAlert(title, message) {
if (isDevice) {
navigator.notification.alert(message, null, title, 'Ok');
} else {
alert(message);
}
// addLog("Alert sent");
}
function signIn() {
const email = document.getElementById('loginEmail').value;
const password = document.getElementById('loginPass').value;
if (!email.trim()) {
sendAlert('Error', 'Please enter an email address');
return;
}
if (!IsEmail(email)) {
sendAlert('Error', 'Please enter a valid email');
return;
}
if (!password.trim()) {
sendAlert('Error', 'Please enter a password');
return;
}
const delay = function (ms) {
return new Promise(((r) => {
setTimeout(r, ms);
}));
};
(async () => {
configureOverlay(1);
await delay(2000);
await firebase.auth().signInWithEmailAndPassword(email, password)
.then((user) => {
document.getElementById('loginPass').value = '';
var user = firebase.auth().currentUser;
if (user != null) {
if (user.emailVerified) {
window.location = 'index.html#/tab/dash';
} else {
window.location = 'index.html#/verify';
}
}
})
.catch((error) => {
sendAlert('Error', 'Unable to sign in: ' + error.message);
});
await delay(2000);
configureOverlay(2);
})();
}
html:
<body ng-app="starter" onload="initialise()">
声明为:
<script src="js/custom.js"></script>
确实很奇怪……您怎么看?是我编码的方式吗?一个输出警报消息的简单功能可以工作,而我的其他功能则不行。 我尝试将所有变量从var更改为const,但我们仍然无法正常工作。
任何信息将不胜感激,谢谢!