2011-01-10 63 views
3

我需要在用戶更改瀏覽器中的字體大小時獲得通知。用戶在瀏覽器中更改字體大小的事件?

我需要它重新定位一些必須在一維中相對於文本中的錨點的元素。

到目前爲止,我還沒有找到任何東西,我有點擔心,這是不可能的。在這種情況下,應該可以使用隱藏的div和一些文本來模擬它,並且腳本輪詢它的寬度變化。但我希望有人有一個更優雅的解決方案。

編輯:

我實現輪詢東西一樣以下。它沒有在所有瀏覽器上正確測試,但它不依賴於瀏覽器的特定功能。 。使用它像$( '身體')綁定( 'fontResize',函數(){...})

$(function(){ 
    $('body').append($('<div id="theFontResizeCaptureDiv">A<br>B<br>C</div>')); 
    $('#theFontResizeCaptureDiv').css({visibility: 'hidden', position: 'absolute'}); 

    window.setInterval(function(){ 
    var div = $('#theFontResizeCaptureDiv'); 
    var stored = parseInt(div.attr('c_height')); 
    if(isNaN(stored)){ // first run 
     div.attr('c_height', div.innerHeight()); 
    }else if(stored != div.innerHeight()){ // changed 
     div.attr('c_height', div.innerHeight()); 
     $('body').trigger('fontResize'); 
    } 
    }, 200); 
}); 
+0

[檢測瀏覽器字體大小]的可能重複(http://stackoverflow.com/questions/739940/detect-browser-font-size)? – 2011-03-08 19:17:33

回答

0

您可以使用想法從這個文件https://github.com/marcj/css-element-queries/blob/master/src/ResizeSensor.js

我incorported它jQuery Terminal as jQuery plugin和使用DIV與&nbsp;和css:

.font { 
    position: absolute; 
    font-size: inherit; 
    top: 0; 
    left: 0; 
    width: 1em; 
    height: 1em; 
} 

如果父元素具有位置:relative或absolute,則會更改字體大小,.font元素將更改大小並觸發resizer回調。

你可以使用這個插件是這樣的:

var font = $('<div class="font">&nbsp;</div>').appendTo(self); 

font.resizer(function() { 
    // font changed size 
}); 

其中self是你的父元素,如果你需要檢測身體上的這個事件,你可以使用'body'代替。

相關問題