【发布时间】:2010-11-25 12:11:02
【问题描述】:
今天早些时候问了this 问题,但我认为我过早地给出了正确答案。我试图弄清楚如何在 Safari 中使用 jquery 获取锚元素的 css 长度和宽度。但是我一直返回“0”,并且有人告诉我这是因为在呈现 css 之前触发了 javascript - Webkit 浏览器的一个怪癖。
这里是原始页面:http://f1shw1ck.com/jquery_sandbox/csspops-orig.html
但是,我写了一个小测试,告诉 jquery 等到所有内容都完全呈现后再抓取 css。 http://f1shw1ck.com/jquery_sandbox/csspops.html
对于选择器
a.popup {
width: 800px;
height: 560px;
}
和html
<a href="http://www.metmuseum.org/toah/hd/apol/hd_apol.htm" class="popup">African Rock Art: Apollo 11 Cave Stone (c. 25,500 - 23,500 BCE); Wonderwerk Cave Stones (c. 8000 BCE)</a>
等到页面完全完成,然后获取这些尺寸:
$(document).ready(function () {
if (jQuery.browser.safari && document.readyState != "complete"){
//console.info('ready...');
setTimeout( arguments.callee, 5000 );
return;
}
alert($("a.popup").css("width"));
});
在 Safari 中仍会返回“0”除外。我是不是走错了路,还是有其他原因?
谢谢!
【问题讨论】:
-
这仍然让我发疯 - 我唯一能想到的就是以某种方式遍历每个元素并使用
('selector').css('width', 800)或你手动设置属性...但这将是一个可怕的,可怕的,不好的黑客攻击。 -
我为此失眠了...甚至不确定我是否想以这种方式定义弹出窗口,但我很想找到一种方法让用户在 CSS 中设置弹出元数据...
标签: jquery css safari cross-browser width