Tag: JavaScript

вКонтакте - кнопка «мне нравится» и pageImage

Подключил на сайте заказчика кнопку “мне нравится” от вконтакте, однако в ней не заработала опция pageImage, в виду чего ссылка шарилась просто как “сопроводительный текст + ссылка”, что непособствует появлению дополнительных лайков(уже из самой соц.сети). Гугл подсказал мне, что я такой не один, и что никто не знает как сию проблему решить. Написал в support — ответили ~ через сутки. Сказали сменить расширение изображения с jpeg на jpg . Сразу не помогло. Оказалось - кеш. Сменил page_id - заработало.

UPD 1. Ответили из vk, пишут:

К сожалению, пока обновление кэша не предусмотрено. Возможно, в скором будущем ситуация будет исправлена.

Значит у разработчиков нет права на ошибку (к тому же, если я не ошибаюсь, незадокументированную)? о_О

Пишем простое Opera-расширение

Эта статья посвящена написанию простого расширения для браузера Opera. Наше расширение будет примитивным, т.к. весь его функционал будет заключаться в user-JS для habrahabr.ru. Лента комментариев оснащена блоком, который отображает количество новых комментариев в топику и кнопку, позволяющую эту ленту обновить. Давайте добавим туда стрелки для навигации по новым комментариям.

C чего начнём?

  • Создадим новую директорию для файлов расширения
  • В ней создадим файл config.xml
Read more

onKeyDown для DIV

Эта маленькая заметка посвящена небольшому трюку, который позволяет добиться работоспособности события onkeydown для тега <div>. Дело в том, что код вроде:

$('#test').keydown( function(e){ console.log( e.keyCode ); } );

Не сработает для HTML аля <div id=“test”>test</div>, а всё потому, что <div> не может получить focus. Простое добавление аттрибута tabindex=“0” проблему решает.

Внедрение CSS на лету

Столкнулся с задачей — внедрить “на лету”, при помощи javascript, CSS-код на страницу. Простое решение “в лоб” не заработало в IE:

$('head').append( $( '<style>', { type: 'text/css' } ).html( 'css код' ) );

Оказалось, что IE ищет в теге <style/> свойство styleSheet.cssText, откуда и берёт код. Решение:

var style = $('<style>', { type: 'text/css' } ).get(0);
if( style.styleSheet ) // IE
{
    style.styleSheet.cssText = css_code;
}
else
{
    $( style ).html( css_code );
}
$('head').append( style );

jQuery().ready

Многие используют $( document ).ready( fn ) или упрощённую запись $( fn ) для выполнения js-кода по окончанию загрузки DOM-модели страницы. Это удобно и кроссбраузерно, однако результат выполнения следующего кода:

<html>
    <head>
        <title>Test .ready</title>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"
            type="text/javascript"></script>
        <script>$( function() { error.error + 'error'; /* Error :) */ } ); </script>
        <script>
            $( function() { alert( 'All right' ); } );
            alert(2);
        </script>
    </head>
    <body> </body>
</html>

может вас разачаровать. Дело в том, что если одна из поставленных в очередь на .ready функций “заглючит”, остальные не выполнятся. Вы не увидете ‘All right’, только ‘2’. Т.е. какой-либо мелочный глюк в одном модуле может привести к полной неработоспособности javascript-а на странице.