1
A
回答
1
我不熟悉SIGWINCH,所以我不能說沒有等價的。我所知道的是,你不能簡單地讓JavaScript返回頁面上留下的文本行數量。這是因爲每個字體都有(/可以有)不同的高度。你需要做的是1)獲取一個用戶的窗口高度,2)用一段文本生成一個span或div(如果你有足夠的寬度,整個字符集將是最確定的),3)獲取高度確定字體的高度4)刪除樣本跨度/格5)用窗口高度除以窗口高度。而當用戶更改窗口的尺寸時,再次執行整個過程(通過window.onresize甚至偵聽器可以注意到窗口大小的變化)。你可以通過在第一次確定字體高度後存儲字體高度來節省一些時間,但取決於你如何編寫函數,這應該不重要。
0
一旦你計算出每一行的高度(取決於你的CSS),你可以做這樣的事情(使用jQuery):
$(function() {
$(window).resize(function() {
var text = '',
i = 0,
lineHeight = 12, // replace with correct value
numLines = Math.floor($(this).height()/lineHeight);
for(i; i < numLines; i++) {
text += "text <br />";
}
$('body').html(text);
});
window.resize();
});
0
創建一個虛擬元素,測量其以像素爲單位的高度,然後摧毀它。
您需要的行數是viewport height
/height of line
。
瀏覽器中SIGWINCH的等價物是resize事件;您可以將處理程序設置爲window.onresize = function(event){...};
(或使用jQuery設置'resize'
事件處理程序)。
0
一種策略是不斷添加文本(比如說單詞,情節,段落),直到出現滾動條,然後返回到最後一個單詞,句子,段落,無論如何。
一種輕型測試hasScrollBars功能是:
function hasScrollBars(el) {
var s = el.style;
var borderW = parseInt(s.borderLeftWidth,10) +
parseInt(s.borderRightWidth,10);
var borderH = parseInt(s.borderTopWidth,10) +
parseInt(s.borderBottomWidth,10);
return el.offsetHeight > el.clientHeight + borderH ||
el.offsetWidth > el.clientWidth + borderW;
}
相關問題
- 1. 不適合瀏覽器窗口的文本
- 2. 網站不適合瀏覽器窗口
- 3. 如何使Flash文件適合整個瀏覽器窗口?
- 4. 當用戶使瀏覽器窗口變大時,我如何使瀏覽器適合我的瀏覽器?
- 5. 如何縮小窗體組件以適應瀏覽器窗口
- 6. 如何讓我的頁面容器適合整個瀏覽器窗口?
- 7. 使每個div元素適合瀏覽器窗口
- 8. 使JavaFX WebView瀏覽器內容適合窗口
- 9. 整個網站縮小到適合瀏覽器窗口?
- 10. Xvfb - 瀏覽器窗口不適合顯示
- 11. 混合瀏覽器窗口寬度
- 12. 幫助瀏覽器窗口會合window.postmessage
- 13. 從瀏覽器窗口拖放選定的錨文本
- 14. 如何等待瀏覽器上(窗口表)運行腳本C#?
- 15. Raphael - 如何將紙張大小適合瀏覽器的窗口大小?
- 16. 如何使網頁適合瀏覽器
- 17. 如何讓Javascript適合瀏覽器端?
- 18. 如何滾動瀏覽器窗口
- 19. 如何改變瀏覽器窗口
- 20. 如何滾動瀏覽器窗口?
- 21. 如何使整個瀏覽器窗口
- 22. 如何關閉瀏覽器窗口?
- 23. 如何在Firefox瀏覽器窗口
- 24. Dart:如何關閉瀏覽器窗口?
- 25. 如何關閉瀏覽器窗口
- 26. 如何拆分瀏覽器窗口
- 27. 確定顯示器與FireBreath瀏覽器窗口
- 28. 如何獲取瀏覽器窗口的X11窗口ID
- 29. 孩子瀏覽器窗口如何改變窗口的屬性?
- 30. Silverlight 5 - 瀏覽器外窗口定位
是的,我忘了,你需要檢查線路高度,不是字體的高度。而且,由於這確實是通過CSS設置的一個值,所以不需要爲測試文本而煩惱。 – 2011-06-02 02:31:30
需要考慮包裝線以及包含塊元素的填充,邊框和邊距。 – RobG 2011-06-02 03:00:21
@robg:true,但如果沒有更多的信息,很難解釋。 – ari 2011-06-02 04:56:01