Cufon.刷新意外行为

Cufon.refresh unexpected behavior

本文关键字:意外 刷新 Cufon      更新时间:2023-09-26

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

    $('.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的弹出窗口)。但是如果我离开它,文本只会部分呈现(最后一个单词丢失,整个文本不可见)。

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

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

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

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