【问题标题】:Cannot delay two JavaScript actions on iPhone / iPad无法在 iPhone / iPad 上延迟两个 JavaScript 操作
【发布时间】:2012-08-24 16:56:29
【问题描述】:

我显示一个加载微调器,以在设备每次旋转后重新加载自定义 pdf 阅读器(在 html 5 中)。它在 android 设备上运行良好,当我在桌面设备上模拟旋转时,但在 iPad 上,我看不到微调器,就好像显示微调器/重新加载 pdf 阅读器/隐藏微调器的操作在“一枪”。 我试图延迟 pdf 重新加载,直到显示微调器,但这是同一件事。 以下是操作顺序:

window.onorientationchange = function() {
           launchSpinnerThenRotate();
}

function launchSpinnerThenRotate(){
    alert(" i'll launchSpinnerThenRotate");
    showSpinner();
    setTimeout(rotatePdfReader(),1000);
}

我已经尝试了 js 和 jquery 函数来显示/隐藏微调器总是具有相同的效果

function showSpinner(){
    //$('#pdfReaderSpinner').css("visibility" , "visible");
    document.getElementById('pdfReaderSpinner').style.visibility = "visible";
    document.getElementById('pdfReaderSpinner').style.zIndex = 100000000;
}

我不认为问题出在微调器上,我可以在第一次启动页面时正确显示它,但我必须在 document.ready 函数中显示微调器:

$(document).ready(function() { 
    var target = document.getElementById('loadingSpinner');
    spinner = new Spinner({top: 0, left: 0,color:'red'}).spin(target);
    showSpinner();
});

$(window).load(function(){
    initPdfReader();
    hideSpinner();
});

【问题讨论】:

  • 您确定将 z-index 设置得足够高吗?
  • z-index 需要至少为 1x10^15 才能隐约可见。
  • 我认为只要将其设置为一个 googol 就可以了吗?
  • 不,问题不在于 z-index,我已选择添加它以确保。我没有设置其他对象的 z-index。

标签: javascript jquery ios html spinner


【解决方案1】:

改变这一行:

setTimeout(rotatePdfReader(),1000);

到这里:

setTimeout(rotatePdfReader,1000);

您希望将函数的引用传递给 setTimeout,以便可以在 1 秒内调用它。目前您正在将函数的结果传递给 setTimeout。

【讨论】:

  • 太棒了!这很神奇。即使它不能解释 iOs 移动设备与其他移动设备之间的不同行为
猜你喜欢
  • 2013-02-22
  • 1970-01-01
  • 1970-01-01
  • 2014-05-08
  • 2021-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-21
相关资源
最近更新 更多