2015-09-07 120 views
1

我使用的是iOS 8.2Safari浏览器的iOS - 点击链接

我有.loading-screen阶级一个div和一个链接,点击后,会提示控制器做一些东西,至少需要几秒钟(后jQuery的弹出生成一个文件),然后刷新页面。点击链接.generate-button后,我想要向用户显示一个弹出窗口,基本上显示“您的文件正在生成 - 请稍候。”

这里是我的代码,修剪,以展示最基础的:

jQuery的

jQuery(document).ready(function() { 

    jQuery(".generate-button").click(function (e) { 
     alert('generating - click!'); 
     jQuery(".loading-screen#generating").addClass('show'); 
    }); 

}); 

HTML

<a href="http://example.com/link/generate/id/101/" class="button generate-button">Generate file</a> 

.... 

<div class="loading-screen" style="display: none" id="generating"> 
    <p>Your file is generating!</p> 
</div> 

CSS

.loading-screen { 
    z-index: 5000; 
    position: fixed; 
    top: 0; 
    left: 0; 
    width: 100%; 
    height: 100%; 
} 

.loading-screen.show { 
    display: block !important; 
} 

在Chrome和Firefox上,这工作正常。我在Safari上遇到了一些问题,特别是在iOS上。

我已阅读其他帖子,指出在Safari上的点击事件是行不通的 - jQuery click events not working in iOS - 我的混淆是,与我的代码,当链接被点击时,警报显示,但弹出窗口不显示。

我尝试使用jQuery(".generate-button").hover(...)来代替,这确实会生成弹出窗口,但是(显然)不会导航到该链接。

它是否与Safari意识到页面正在远离导航,因此不在页面上进行任何进一步的更改?这是我目前唯一的理论。

在Mac上的Safari浏览器中,行为是页面远离Chrome浏览器/火狐浏览器提供的URL(链接中指定的URL),但这对我来说目前不是这样的问题。

帮助或想法赞赏。谢谢。

回答

1

我找到了一个解决办法,也许这将帮助别人:

更改链接按钮:

<button onclick="generateFile('http://example.com/link/generate/id/101/')" class="button generate-button">Generate file</button> 

添加JS功能:

function generateFile(url) { 
    jQuery(".loading-screen#generating").addClass('show'); 
    // 10ms delay so popup shows before page is navigated away from 
    setTimeout(function() { 
     window.location = url; 
    }, 10); 
} 

setTimeout也许可以做更好的方法,但它适用于我;它会尝试确保在调用window.location之前addClass已完成并已呈现。

我可以接受我的答案(明天)。

+0

只是从'a'切换到'button'使它工作,所以显然链接'onclick'不工作 – brauliobo

0

IOS对点击事件不起作用。你应该修改你的代码为:

jQuery(".generate-button").on("click tap", function (e) { 
     alert('generating - click!'); 
     jQuery(".loading-screen#generating").addClass('show'); 
    }); 
+0

我已经改变它到这个,但它没有任何区别(我刷新了我的缓存)。 – Sarah

+0

尝试仅使用“点按”,而不点击 – Del

+0

这没有任何效果,我认为这是因为我需要加载jQuery手机。我为我的问题找到了解决方法(请参阅我的答案);尽管感谢你的帮助。 – Sarah

相关问题