Показаны сообщения с ярлыком JavaScript. Показать все сообщения
Показаны сообщения с ярлыком JavaScript. Показать все сообщения

вторник, 25 марта 2014 г.

TypeError: browser is undefined - как победить?

Стандартный плагин browser в Jquery выпилен и по идее для решения нужно обновить все плагины после обновления JQuery, но что делать, если автор плагина забыл про его обновление - ну написал и всё и не переписывает версию без $browser, а самому писать плагин лень?

Есть в наше время люди хорошие, которые этот плагин поддерживают в актуальном состоянии и предоставляют в общем доступе

вторник, 24 июля 2012 г.

tinymce размер (ширина и высота) блока

1. По умолчанию ширина и высота блока tinymce берется от размера соответствующего <textarea>

2. Ширину и высоту можно задать при инициализации (в пикселях)
    tinyMCE.init({
         .......
        language : "ru",
        width : "500", 
        height : "200",
        ......  

3. Если вы меняете размер блока, то он сохраняется в кукисах, чтобы отключить эту штуку и сделать так, чтобы ширина при обновлении страницы возвращалась к значениям по умолчанию (которые заданы стилями или параметрами), то нужно прописать соответственную опцию в инициализацию

theme_advanced_resizing_use_cookie : false

4. Если вы пожелаете отключить возможность изменения размеров

theme_advanced_resizing: false





5. Запретить изменение ширины, но оставить возможность изменение высоты блока
theme_advanced_resize_horizontal: false


6. Задать максимальные и минимальные значения ширины или высоты
theme_advanced_resizing_max_height:25,
theme_advanced_resizing_max_width: 500,
theme_advanced_resizing_min_height: 20,
theme_advanced_resizing_min_width: 200








Более подробно читайте тут

четверг, 12 июля 2012 г.

tinyMCE и Jquery Form Plugin

Суть проблемы такова: при отправке формы при помощи ajax плагина jquery поля, которые с tinymce редактором, отправляются устаревшие.

Для того, чтобы разобраться в проблеме, посмотрим как устроен tinymce, он скрывает (не путать с удалением) нужные <textarea> и на их месте создает свой блок с текстовым редактором. Улавливая событие отправки формы, tinymce вставляет из своих блоков текст в блок <textarea> и отправляет форму.

А плагин JqueryForm переопределяет событие отправки на себя, тем самым tinymce не успевает вписать изменения и форма отправляется со старыми данными в textarea, решение вопроса такое:

 $(document).ready(function()
{
       $('#ajax_form').submit(function() {     
            tinyMCE.triggerSave();
            $(this).ajaxSubmit();
            return false;
       })
});




P.S. (Как всегда не всё по плану)
Я не сразу нагуглил эту инфу и решил написать свой аналог tinyMCE.triggerSave(), может кому то пригодится в целях изучения jquery


function text_save_tiny (obj)
{

  $(obj).find('textarea').each( 
  function(){
  //если у textarea нет id, делаем id=name
  if (!$(this).attr('id')) $(this).attr('id',$(this).attr('name'));                $(this).val(tinyMCE.get($(this).attr('id')).getContent());
});

}

понедельник, 14 мая 2012 г.

Google chrome и глюки с JavaScript (Jquery)

Гуглохром - это крутой браузер, который показывает страницу еще до того момента, когда она загрузится полностью.

Вот и сейчас, использую плагин slider для генерации блока с товарами и переключения между картинками разного размера, плагин слайдера определяет высоту картинки и подгоняет блок под эту высоту, естественно, скрипт отрабатывает через раз криво из-за того, что картинка еще не подгрузилась а скрипт выполнен.

Если вы работаете в скрипте с какими то объектами, которые нужно подгружать, то лучше использовать
$(window).load(function()



вместо
$(function()

четверг, 26 апреля 2012 г.

Масштабирование картинок (пропорционально) средствами JavaScript

В общем ситуация такая - есть всякие разные картинки, и вам их нужно вписать в блоки
фиксированного размера. Как быть? Если задать ширину и высоту в тегах <img>, то пропорцию не сохраним, если прописать только ширину или только высоту, то если ширина больше высоты или наоборот, то картинка может вылезти за пределы блока, выход может и быдлокодинговый, но работает.

function auto_size (img,max_width,max_height)
{
if (img.width>maxwidth) 
{
width = img.width; height = img.height;
img.width = maxwidth;
img.height = (maxwidth*height)/width;
}
if (img.height>maxheight) 
{
width = img.width; height = img.height;
img.height = maxheight;
img.width = (maxheight*width)/height;
}
}


У тега img пишем <img onload="javascript:autosize(this,250,500)" src="...." >
Где 250 это максимальная ширина картинки, а 500 - максимальная высота, если картинка вылезет по какой то из сторон за пределы блока, то она пропорционально уменьшится.


Что делать, если лень писать onload для каждой картинки?


На помощь приходит Jquery и вот такая функция


$(window).load(function() {
$('.class img').each(function(){
 auto_size ($(this)[0],195,200);
});
});

Для всех картинок, вложенных в класс будет применена эта функция


P.S. Нужно еще придумать механизм, при котором эти картинки сперва будут невидимыми, а потом масштабироваться и отображаться, т.к. картинки отображаются до того как страница загрузится и отображаются не совсем красиво.