2012-05-05 40 views
3

以下代碼不會返回文檔的正確大小。jQuery在Chrome中返回錯誤的寬度和高度18.0.1025.168

<!DOCTYPE html> 
<html> 
    <head> 
     <script type="text/javascript" src="./scripts/jquery-1.7.2.js"></script> 
     <script> 
      alert($(document).width()); 
     </script> 
    </head> 
    <body style="width:100%"> 
     <div style="width:100%" id="myappClientContainer">DEFAULT HTML</div> 
    </body> 
</html> 

當我在窗口內容的寬度設置爲320,警報使用Internet  時資源管理器9.0.8112.16421例如說426

相同的代碼報告正確。

這是Chrome的錯誤嗎?還是與jQuery?還是其他什麼?

我試圖在文檔中設置一個div以填充文檔的整個大小時,偶然發現了這個問題,所以也許這不是獲取整個文檔尺寸的正確方法嗎?

我該如何解決這個問題?


更新1:

遵循以下一些建議,我曾經嘗試都這樣:

<!DOCTYPE html> 
<html> 
    <head> 
     <script type="text/javascript" src="./scripts/jquery-1.7.2.js"></script> 
     <script> 
      function sizeme() { 
       alert($(document).width()); 
      } 
     </script> 
    </head> 
    <body style="width:100%" onload="sizeme()"> 
     <div style="width:100%" id="myappClientContainer">DEFAULT HTML</div> 
    </body> 
</html> 

這:

<!DOCTYPE html> 
<html> 
    <head> 
     <script> 
      function sizeme() { 
       alert($(document).width()); 
      } 
     </script> 
    </head> 
    <body style="width:100%" onload="sizeme()"> 
     <div style="width:100%" id="myappClientContainer">DEFAULT HTML</div> 

     <!-- YOUR jQuery SCRIPTS here before the '</body>' tag + load from Google (it's faster). --> 
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
     <script> 
      (function($){ // remap '$' to jQuery 
       alert($(document).width()); 
      })(jQuery); 
     </script> 
    </body> 
</html> 

但我仍然得到錯誤的大小他們兩人(Chrome中的18.0.1025.168)。

我正在使用jQuery 1.7.2。

回答

0

「Div」元素本身會填充所有可用的水平空間,因此不需要定義它的寬度。 另外$(document).width();是正確的方法,只有GET文件的寬度。

+0

我知道這一點,我有我的理由想要設置div的寬度。具體來說,這是由於我在JQeury 1.7.1上報告的錯誤,其中.width()大小爲「100%」的元素將報告100作爲大小。但任何方式您的迴應與我描述的問題無關...... – epeleg

2

您正在運行該文件,完成文檔加載完成之前。試試這個:

$(function(){ 
    alert($(document).width()); 
}); 
+0

以確保完整的文檔已加載,包括圖形使用: $(window).load(function(){ //運行代碼 }); –

+0

我知道兩個提到的方法,我已經嘗試使用'onLoad'和'$(fn())',因爲我現在在UPDATE 1中指出,並且都沒有幫助。 此代碼是否適用於我提到的瀏覽器版本? – epeleg

+0

是的,我有相同的版本(在OSX上),它會按預期警告文檔的寬度。也許你期待着不同的東西,而不是文件的寬度?由於身體寬度爲100%,警告號碼應該與窗口寬度相同(或者根據瀏覽器略少一些)。 – bfavaretto

0

我建議你做的是這樣的:

<!DOCTYPE html> 
<html> 
<head> 

<!-- OTHER JS LIBRARY/SCRIPTS --> 
</head>  
<body style="width:100%"> 

<div style="width:100%" id="myappClientContainer">DEFAULT HTML</div> 

<!-- YOUR jQuery SCRIPTS here before the '</body>' tag + load from google (it's faster) --> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
<script> 
    (function($){ // remap '$' to jQuery 
     alert($(document).width()); 
    })(jQuery); 
</script> 

</body> 
</html> 

保存並在Chrome中打開。

+0

它不起作用。至少不是我Q版(18.0.1025.168米)中的鉻版。對你起作用嗎? – epeleg

+0

@epeleg當然!幾乎相同的版本。 18.0.1025.168 –

+0

嗯...不知道爲什麼我有這個「米」。列在我的版本號(將編輯出Q)。它不顯示。所以基本上我們有相同的版本和不同的結果?你確定它確實警告右側,而不是它只是提醒一些數字? – epeleg

0

嘗試document.body.clientWidth

它爲我工作

2

我有同樣的問題在Chrome版本33.0.1750.154 M於Windows 8的

我的筆記本電腦顯示器有一個水平分辨率:1366像素

但是,Chrome的水平分辨率(寬度)高於筆記本電腦的硬件性能。

使用jQuery:

$(window).width()收益1483像素

使用普通的JavaScript:

window.innerWidth收益1483像素

document.body.clientWidth收益1484像素

(這也是不工作)

結論: 由於普通的JavaScript返回相同的錯誤值的jQuery, 這絕不能在jQuery中,但在瀏覽器的錯誤。

編輯 鉻是顯示100%的放大倍率,當我打開另一個選項卡變焦出的狀態在我case.Though我的測試標籤,內容顯得小,當檢查(CTRL +,CTR - 在Windows上)它被縮小了。將新選項卡重置爲100%(ctrl 0 0n windows)後,問題消失。

當我縮小Firefox時,Firefox的行爲方式相同。

相關問題