这个问题在Mac上是Safari 5.1的独有之处.当点击选择下拉菜单时,页面将完全刷新.经过几分钟的调试,我得出结论,该错误是由…引起的…等待它…在选择框上放置一个CSS边框. (border:1px solid #ccc;)
WTF?
显然,Safari的渲染引擎不喜欢这种风格,它只是整个页面.只有Safari 5.1(5.0.3是好的),只在Mac上.
在我们公司的多个应用程序发生时,它可以重现100%.但是,它并不是普遍的100%重现,这意味着我不能去任何随机的网站并触发它.它必须是css规则或html标记的一些组合来触发它.
有没有人见过这个?任何洞察哪些具体条件可能导致它?如果没有,哦我会把它粉碎一个浏览器的错误,并留下这个帖子为其他开发人员找到什么时候他们有同样的问题.
解决方法
我找到了我们在我们网站上具体存在的问题的最终解决方案.网站加载后,我们将TypeKit库附加到页面的字体.当我将选择框上的font-family属性专门设置为TypeKit字体以外的其他属性时,刷新行为就不再显示出来了.
我不知道你是否使用TypeKit,但这将是一个很好的地方.
原始答案:
我今天在我公司运营的一个网站上遇到了这个问题.我已经把它缩小到一个最可能导致它的CSS规则(评论那些不会在页面重新加载时产生错误).
我看到的主要问题可能是浏览器本身的一个安全问题.如果您在任何标签中有任何打开的会话,它也将清除其会话数据.
找到一个有这个错误的页面,并打开几个其他选项卡登录到Google帐户或其他一些帐户.当您单击站点上的错误选择框时,页面将被刷新,并且其他选项卡中的会话也将重置.
更新:
我缩小了影响我们页面的CSS规则集.这些CSS规则中的任何一个将导致此行为:
-webkit-appearance
>边界
>边框式
> border-radius
> -webkit-border-radius
>背景重复
>背景位置
>背景图片
原来我以为是因为我们使用@L_301_0@而不是实际的png或jpg(给出类似于Firefox中的默认风格)的引起问题的-background-image属性,但我显然是错误.
更新2:我尝试使用CSS重置将事情恢复正常使用webkit-specific CSS hack,但只要触摸任何这些CSS规则似乎导致事情走haywire.我想我们将需要删除规则,直到有一个修复为此.
更新3:它似乎与页面上加载的Javascript有关.如果我在Safari中禁用Javascript,这不会发生.