JavaScript无法在iOS设备上运行,我的代码有什么问题?

时间:2019-08-05 19:35:38

标签: javascript ios cordova phonegap

您好,感谢您抽出宝贵时间阅读此问题。

最近我的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,但我们仍然无法正常工作。

任何信息将不胜感激,谢谢!

0 个答案:

没有答案