Cufon.refresh出乎意料的行为

时间:2012-06-19 14:22:28

标签: javascript cufon

这是我的问题。我有以下代码(我带走了不相关的部分):

    $('.poll').click(function (e) {
         $.post('/my/ajax/script', {}, function(d) {
             j = $.parseJSON(d);
             var el = $('#my_msg').find('.message-text').find('p'); 
             // That p has class which was consumed by Cufon at document ready
             el.html(j.message);
             $('#my_div').fadeIn(fadeTime, function() { Cufon.refresh(); });                      
         });
     }
     e.preventDefault();
 });

如果我删除Cufon.refresh回调,一切都按预期工作(包含j.message的弹出窗口显示)。但如果我离开它,文本只会部分呈现(最后一个单词丢失,整个文本不可见)。

这种行为可能是什么原因?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案而且非常简单。在我的页面的头部加载了两个Cufon准备的字体,用于不同的(不相交的)选择器。在关于第一个(所需)字体的行之后,调用Cufon.replace。由于没有其他字体,Cufon将替换此字体提供的所有内容。但在那之后是第二种字体。

在这种情况下,Cufon.refresh()奇怪地将之前消耗的每个选择器替换为最后一个字体。这是因为第一行Cufon.replace(...)没有指定字体。

Cufon.replace(selector, fontOptions)而不是Cufon.refresh()解决了它。