触发电子邮件叠加后iPhone jQuery中断
我正在使用jQuery为iPhone开发移动网站。 我有一个隐藏的div(类.tile-content
),它包含一些内容。 单击带有onclick="showContent(this)"
的链接onclick="showContent(this)"
调用fadeIn,如下所示:
function showContent(obj) { alert($(obj).html()); $(obj).next('.tile-content').fadeIn(); return false; }
一切都很好,直到我点击“发送电子邮件给我们”,其上有一个mailto:链接,触发iPhone的内置电子邮件覆盖function。 然后我点击取消并返回该网站。 现在,如果我点击链接,我的.tile-content
div将不会显示。 我虽然在iPhone上得到了适当的警报。 在我按下一次后,没有任何作用(我认为这意味着有一个js错误?)。 在物理iPhone上进行调试非常困难。 有任何想法吗?
更新:由于@John Boker的提示,我启用了Safari Mobile的调试控制台。 没有错误出现,但我仍然遇到同样的问题。
该问题发生在setInterval / setTimeout javascript函数中。 在iPhone上的Safari中启动邮件窗口时,似乎暂停了用于这些function的内部计时器。 发送电子邮件(或点击取消)后,计时器将暂停,并且不会触发setTimeout / setInterval函数。
这将破坏依赖于setTimeout / setInterval的任何事情,例如jquery动画和任何异步ajax调用,因为jquery使用setInterval进行轮询直到请求返回(我自己遇到了这个问题)。
如果你点击url栏,然后点击取消或按下手机上的关闭按钮,然后返回到safari,function将启动,一切都将开始工作。 不是一个可接受的解决方法。
如果你去
settings -> safari -> developer -> debug console
你可以打开调试并查看javascript错误
我可以让它工作的唯一方法是杀死fadeIn / fadeOut动画,而只是使用show / hide。
$(this).parent('.tile-content').hide();
因此,电子邮件重叠之谜尚未解决。