Удаление Cufon, как только он был загружен
Я знаю, что это немного странно, но я использую Cufon на одной из своих страниц, но мне нужно иметь возможность отключить его для всех элементов, если пользователь нажимает кнопку.
Теперь я надеялся, что это будет как Cufon.Reset(селектор) или что-то в этом роде, но я не смог ничего найти, так есть ли способ превратить текст Cufoned обратно в стандартный текст без обновления страницы?
4 ответа
var RemoveCufon = function (selector) {
$(selector).each(function (index, element) { $(element).text(BuildCufonTextString(element)); });
};
var BuildCufonTextString = function (parent) {
var elementText = "";
$("cufon cufontext", parent).each(function (index, element) { elementText += $(element).text(); });
return $.trim(elementText);
};
Вот ручной способ, который работает, но хотел бы знать что-нибудь попроще...
Не думай так. Cufon создает img. Поэтому отмена без обновления страницы невозможна.
Вы можете написать сценарий для:
- скопировать текст (скопировать html-тег и скрыть его) перед запуском Cufon
- чем при нажатии кнопки скрыть cufon и показать скопированный текстовый элемент с чистым текстом
Я бы предложил использовать @font-face вместо Cufon - отлично работает на IE, FF, Safari. Хром, скажем, на 80% качественный.
Проверьте этот сайт - он использует метод @font-face. Работает отлично.
Допустим, все ваши теги H1 выполнены в стиле cufont. Для этого вы будете использовать:
Cufon.replace('h1');
если вы хотите отменить действие cufon, вы можете использовать:
$('h1').each(function(){
$(this).find('cufon').each(function(){
$(this).replaceWith($(this).find('cufontext').text())
})
})
Я только что прошел весь процесс реализации более простой версии одного из сценариев, обсуждаемых здесь, чтобы получить текст из тегов cufontext. Работало просто отлично
var nameFromCufon = $(profileName).find('cufontext').each(function(){
$(this).replaceWith($(this).text())
})
ProfileName является непосредственным родительским тегом span, окружающим теги cufon. Затем я попробовал что-то настолько простое, что было слишком очевидно: $ (profileName).text ();
.text дает мне только текст со всем удаленным кодом тега. Так просто.