2

今天早些时候问了这个问题,但我认为我过早地给出了正确的答案。我试图弄清楚如何在 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"));
        });

除了“0”仍然在 Safari 中返回。我是不是走错了路,还是有其他原因在起作用?

谢谢!

4

2 回答 2

2

科林是正确的。它返回 0 的原因是因为根据 Safari,锚点没有有效的 CSS 宽度,因为它们是内联元素。这可能是 jQuery for Safari 中的一个错误。

与错误无关,设置锚点的宽度来定义它触发的弹出窗口的宽度对我来说似乎不是一个好习惯。你为什么要这样做?设置与锚点的呈现无关的锚点的 CSS 似乎有点倒退,只需在 javascript 中设置它以查找 a.popup.large 并为弹出窗口设置一定的宽度/高度。否则,查找 a.popup 并设置不同的高度和宽度。

于 2009-09-05T02:58:38.687 回答
1

尝试添加display: block到 a.popup?

这将强制链接为 800px 宽,如果您想获得其自动宽度,请尝试

alert($("a.popup").width());
于 2009-09-04T03:14:33.280 回答