2009-09-04 6 views
2

質問this質問を早くも受け取りました。 Safariでjqueryを使ってアンカー要素のCSSの長さと幅を取得する方法を理解しようとしています。しかし、私は "0"が返ってきており、これはCSSがレンダリングされる前にjavascriptが起動しているためであると言われました。これはWebkitブラウザの奇抜なことです。ここで

は、元のページです:http://f1shw1ck.com/jquery_sandbox/csspops-orig.html

しかし、私はすべてが完全にCSSをつかむ前にレンダリングされるまで待つようにjqueryのを言って、少しテストを書きました。セレクタ

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> 

待ちのためにhttp://f1shw1ck.com/jquery_sandbox/csspops.html

ページが完全になるまで、それらの寸法を取得: "0" を除いて

$(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)'または手動で属性を設定することだけです。しかし、それは恐ろしい、恐ろしい、いいえ良いハックになります。 –

+0

私はこれ以上睡眠を失っています...私はこのようにポップアップを定義したいとはいっても、私はCSSでポップアップメタデータを設定する方法を見つけようとしていません... –

答えて

2

コリンが正しいことをしようと、800ピクセル幅でリンクを強制します

。 0に戻っている理由は、アンカーがインライン要素であるためSafariによると有効なCSS幅を持たないからです。これはおそらくSafari用のjQueryのバグです。

バグとは関係なく、トリガーするポップアップの幅を定義するためにアンカーの幅を設定することは、私にとっては良い方法ではないようです。なぜあなたはこれをしたいのですか?アンカーのプレゼンテーションとは関係のないアンカーのCSSを設定するのは逆のようですが、javascriptに設定してa.popup.largeを探し、ポップアップの幅と高さを設定します。そうでなければ、a.popupを探し、異なる高さと幅を設定します。

+0

まあ、私のアイデアは正確ではありませんが、このプロジェクトでは、このテンプレートを使用してjavascriptを知らないサイトを構築している人がいます基本的なCSS。 現在、ブラウザやshow-navなどのスタイル名を持つブラウザ要素を指定しています。

1

をa.popupに追加しようとしましたか?あなたはその自動幅を取得したい場合は、その後

alert($("a.popup").width()); 
+0

私はあなたが誤解していると思いますCSSセレクターは実際に表示に使用されるのではなく、ポップアップの高さと幅を定義します。 問題は、Safariとjqueryでアンカーの幅と高さのCSS定義値を返すにはどうすればよいですか?他のブラウザは正常に動作します。 –

+0

元の意図のためにhttp://f1shw1ck.com/jquery_sandbox/csspops-orig.htmlを参照してください。 –

+1

おそらく 'display:inline-block'が良いでしょう。 'width'を定義することができますが、' inline'表示タイプは保持されています。 (それはIE6では信頼できないものの、通常はノーマルインライン要素では大丈夫ですが) –

関連する問題