$(this).css(“width”)不适用于Safari中的ancohor标签

我正在使用CSS选择器为Web模板生成自定义弹出窗口 – 基本上,有些制作人对JS不熟悉,我需要一种简单的方法来设置弹出窗口大小等等。我不是真的感兴趣的是这种方法的优点,但是希望理解为什么jquery似乎无法获得CSS中为Safari中的锚定义的宽度和高度。

请参阅: http : //f1shw1ck.com/jquery_sandbox/csspops.html

我的问题的核心:

对于选择器a.popup {width: 800px;height: 560px;}和锚点African Rock Art: Apollo 11 Cave Stone (c. 25,500 - 23,500 BCE)为什么

 if ($(this).css("width")) { windowParams.width = $(this).css("width"); } if ($(this).css("height")) { windowParams.height = $(this).css("height"); } 

两个属性在Safari中返回为零?

其他浏览器中的onclick弹出警报:toolbar = no,directories = no,location = no,resizable = yes,menubar = no,scrollbars = yes,status = no,width = 800px,height = 560px,top = 20,left = 240

Safari中的警报:toolbar = no,directories = no,location = no,resizable = yes,menubar = no,scrollbars = yes,status = no,width = 0px,height = 0px,top = 20,left = 640

谢谢你帮我理解。

安迪是对的。 这里提供了一个解决方案:

使用JavaScript获取图像的真实宽度和高度? (在Safari / Chrome中)

它在Chrome中也不起作用。

从这个链接和其他Stack Overflow回答看起来,原因是Webkit浏览器将报告“0”或“未知”作为大小,直到它完全加载,这可能为时已晚。

正如Micah所说,这是因为Javascript和CSS是并行加载的,这意味着在脚本运行时可能无法完全应用样式。