2015-10-27 84 views
1

我有一個輸入,當輸入值超過輸入寬度時,它會調整字體大小。這適用於Firefox或Chrome,但不適用於IE。 我搜索了很多,它看起來像IE瀏覽器有滾動寬度的問題;它總是返回相同的值。ScrollWidth在IE中返回相同的值

我如何使這項工作在IE瀏覽器。 http://jsfiddle.net/BelgoCanadian/k1xpnvxL/ 請使用Chrome或Firefox查看才能運作。

function autoSize() { 
    var defaultFont = 20 
    var tbx = $('#textbox') 
    //Parsing necessary to get rid of "px" 
    var fontSize = parseFloat(tbx.css("font-size").substring(0, tbx.css("font-size").length - 2)) 
    //While loop to decrease font until it fits in the textbox 
    while (tbx[0].scrollWidth > tbx[0].clientWidth) { 
     fontSize = fontSize - 1; 
     tbx.css("font-size", fontSize + 'px') 
    } 
    //While loop to increase font back to default font size 
    while (tbx[0].scrollWidth === tbx[0].clientWidth && fontSize < defaultFont) { 
     fontSize = fontSize + 1; 
     tbx.css("font-size", fontSize + 'px') 
    } 
} 
+1

可能重複[(IE Specific)如何確定輸入的文本是否長於輸入元素的寬度](http://stackoverflow.com/questions/27829233/ie-specific-how-to-determine-if-entered -text-是-較長然後輸入元素-WI) – Jcl

回答

1

你可以用一個叫scrollWidthPolyfill啄修復IE /邊緣scrollWidth問題。

我注意到它並不是特別健壯 - 也就是說,當您在腳本文檔的頭部加載腳本時,它會中斷。所以將它附加到身體上,無論如何這是最佳實踐。

但它的工作原理。見this demo on JSBin。但是,您必須在自己的代碼中解決一些問題,正如您在IE中運行演示時所看到的那樣。