【问题标题】:JavaScript Methods Not Executing Consistently In Mobile Safari vs. Android ChromeJavaScript 方法在移动 Safari 与 Android Chrome 中的执行不一致
【发布时间】:2016-02-11 15:29:46
【问题描述】:

我在 JavaScript 中有一个方法,如下所示:

function onAction() {
    getValue1();
    getValue2();
    getValue3();
}

当我调用 onAction() 时,我看到 Mobile Safari 和 Android Chrome 之间有两种不同的行为。在 Safari 中,我获得了所有三种方法的值。在 Android Chrome 上,我只得到最后一个方法的值。哪个是最后一个并不重要。我怀疑这可能是执行时间问题并尝试了以下操作:

function onAction() {

    new Promise(function(resolve,reject) {
        resolve(1);
    })
    .then(function() {
        getValue1();
    })
    .then(function() {
        getValue2();
    })
    .then(function() {
        getValue3();
    });
}           

同样,它在 Mobile Safari 中运行良好,但在 Android Chrome 中却不行。

我确定我遗漏了一些明显的东西,但它让我望而却步。如果重要,getValue* 函数用于通过每个平台的 Native Code->JavaScript 桥接机制获取值。

感谢任何帮助。如果我能提供更多信息,请告诉我。

问候,

**附加信息**
getValueX 函数不返回任何值。它们触发将值推送到本机包装器:

function getReaderSDKVersion() {
    var message = {'action' : MPDataEnum.SDKVersion};
    raiseMessage(message);
}

function raiseMessage(message) {
    if (isPlatformiOS()) {
        window.webkit.messageHandlers.interOp.postMessage(message);
    } else {
        var url = "mpcard://runMethod#" + JSON.stringify(message);
        window.location.href = url;
    }
}

【问题讨论】:

  • 我们必须知道getValueX 的内部是什么样子。
  • 我们必须知道getValueX 的内部是什么样子。

标签: javascript android html mobile safari


【解决方案1】:

问题在这里得到解答:

Triggering shouldStartLoadWithRequest with multiple window.location.href calls

虽然这在大多数浏览器中都是一个问题,但现在似乎不会影响 Mobile Safari。

【讨论】:

    猜你喜欢
    • 2016-08-20
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-18
    • 1970-01-01
    相关资源
    最近更新 更多