【问题标题】:Modal appears on Chrome/Firefox but not safari?模态出现在 Chrome/Firefox 上但不是 safari?
【发布时间】:2015-06-07 18:16:33
【问题描述】:

我有一个标有“shoe_tag”的“a”标签链接到一个url,下面的js代码如下:

$(".shoe_tag").on('click', function() {

    tpos = $(window).scrollTop() + 300;
    myModal.open();
    $(".scotch-modal").css({top:tpos, position:'absolute'});


});

此代码允许我在服务器响应时打开一个模式,这通常需要大约 4 秒。在 Chrome 和 Firefox 上,模式会在浏览器等待服务器响应时打开,但在 Safari 上不会打开模式。但是,如果我在最后放置一个调试器语句,然后在 Web 控制台中调用“myModal.open()”,那么模态将出现。除非我在控制台中调用它,否则它几乎就像 Safari 跳过这段代码一样。一个多星期以来,我一直在研究基于 Safari 的东西,很困惑,有什么想法吗?

【问题讨论】:

  • 应该是 var tpos 而不是 tpos

标签: javascript jquery google-chrome safari


【解决方案1】:

我认为是浏览器的渲染管道有问题,请稍等片刻后显示模态:

$(".shoe_tag").on('click', function() {

    var tpos = $(window).scrollTop() + 300;
    $(".scotch-modal").css({top:tpos, position:'absolute'});
    setTimeout(function(){myModal.open();}, 100);

});

计时器多次救了我的命 ;-)

【讨论】:

    【解决方案2】:

    试试

    var tpos = $("body").scrollTop() + 300;
    

    Webkit 浏览器总是将 window/html scrollTop 呈现为零。

    【讨论】:

    • 这不是位置问题,当我在浏览器中按“返回”时,由于某种原因,模态框在那里,并且位置正确。就像一旦 Safari 发出请求,它就不会在页面上呈现任何其他内容?
    • 你能创建一个plunker并分享。这样我调试起来会更容易。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 2013-11-21
    • 2023-04-06
    • 2014-08-22
    • 2015-06-24
    • 1970-01-01
    相关资源
    最近更新 更多