Посетите форум

Internet explorer + mootools. Операция прервана/Operation aborted

При использовании библиотеки mootools и innerHTML или appendChild в интернет эксплорер возникает ошибка - страница не загружается и выдается ошибка - операция прервана.

Возникает это, потому что дочерний контейнер содержит скрипт, изменяющий родительский контейнер.

На сайте Microsoft об этой проблеме знают, но решения, кроме как использовать internet explorer 8 - не предлагают. Нам такой вариант не подходит, да и решение простое до безобразия - тегу script надо добавить defer="defer".
Таким образом мы говорим браузеру, что исполнять этот скрипт нужно после полной загрузки страницы.

No Comments | Filed under Fix

Прозрачный PNG в IE 6. Универсальное решение.

Во всех предыдущих решениях предполагалось, что картинке .png или окружающему ее диву – будет присваиваться определенный класс.
Этот вариант – сам ищет все .png на странице и делает их прозрачными.

Качаем файл »

В нем лежит скрипт и картинка. Папку pngfix кидаем в корень (если будете переименовывать – в скрипте надо заменить первую строчку – путь до clear.gif).

И теперь – подключаем условными комментариями (чтобы не морочить голову другим браузерам) сам скрипт:

<!–[if lt IE 7]>
<script type="text/javascript" src="/pngfix/unitpngfix.js"></script>
<![endif]–>

No Comments | Filed under Fix

Wordpress и Sape, проблеммы индексации

Не хотели мои сайты на wordpress индексироваться sape‘овским роботом, не хотел и все тут.
Причем некоторые из них, например этот блог - индексировался на ура, а сделанные по шаблонной системе и одной и той же сборки - нет.
И вот сегодня - ура, ура, кричат фанфары - разобрался.
Итак, по пунктам, какие могут возникнуть проблемы:
1) Это конечно же UTF8, о чем я подумал первым делом. Исправляется заменой:
$sape = new SAPE_client();
на
$o[’charset’] = ‘UTF-8?;
$sape = new SAPE_client($o);
unset($o);

2) Использование mod_rewrite, красивых ссылок т.е.
Лечится изменением строчки
$sape = new SAPE_client();
на строчку
$o['request_uri'] = $_SERVER['REDIRECT_URL'];
$sape = new SAPE_client($o);
unset($o);

После всех махинаций получаем следующий код:

define(’_SAPE_USER’, ‘1234qwertyuiop567890asdf’);
require_once($_SERVER['DOCUMENT_ROOT'].’/’._SAPE_USER.’/sape.php’);
$o['request_uri'] = $_SERVER['REDIRECT_URL'];
$o[’charset’] = ‘UTF-8?;
$sape = new SAPE_client($o);
unset($o);
echo $sape->return_links();

Где 1234qwertyuiop567890asdf - номер вашей папки в sape.
О том, какие плагины лучше использовать - напишу позже.

Увы, эти махинации мне не помогли, и я вообще не знал что делать.
Решил посмотреть логи апача - робот достукивается до страниц нормально.
Решил внимательнее рассмотреть страницы, и увидел следующий мета тег, оставленный заботливым
All-in-one-seo-pack
<meta name="robots" content="noindex,follow" />

В обще после долгих матюков и радости что я наконец нашел причину - отключил этот плагин (ибо особо его и не использовал) и наслаждался как саповский робот добавляет >1000 страниц

7 Comments | Filed under Fix, Новичкам

Кавычки в WordPress

Решил воспользоваться одним из фиксов, которые выкладывал ранее – и с удивлением обнаружил, что коварный wordpress заменяет обычные кавычки на спецсимволы &#8220 и &#8221, в следствии чего java-скрипт выдает ошибку.
Лечится это довольно просто – открываем файл /wp-includes/formatting.php, ищем в нем переменную $dynamic_replacements.
В этой переменной (Если быть точнее – в массиве) находим те самые &#8220 и &#8221 (’$1&#8220;$2′ ‘&#8221;$1′) и заменяем на ‘$1″$2′, ‘"$1′.
Теперь все что писалось ранее имеет смысл и прекрасно работает.

No Comments | Filed under Fix

Прозрачный PNG в ie6 (Вариант 2)

PNG-24 - отличный формат для веб, может передавать полупрозрачность. Но в internet explorer 6 прозрачности нет.

На помощь приходит следующий код:
<i class="png"><img src="kartinka.png"></i>
Как можно понять тут выводится сама png картинка, обернутая в тег <i>. Сам этот тег <i> можно заменить на что угодно, важно чтобы у него был прописан class="png".

Далее в css вставляем это:
/*png in ie6 fix*/
* html .png
{
width: expression(this.firstChild.width);
filter: expression("progid:DXImageTransform.Microsoft.AlphaImageLoader(src=’"+
this.firstChild.src+"‘, sizingMethod=’image’)");

background: expression("transparent url("+
this.firstChild.src.replace(".png", ".gif")+") no-repeat");
background: none !important;
}

* html .png img
{
behavior: expression(this.style.visibility="hidden");
}
/*png in ie6 fix*/

Все, наслаждаемся прозрачностью и полупрозрачностью!

8 Comments | Filed under Fix

Маскируем ссылки с помощью mod rewrite

Гораздо симпатичнее будет выглядеть ссылка вида http://fixblog.ru/sape, чем ссылка вида http://www.sape.ru/r.77b51afb98.php. Пример - блок партнеры справа.

Для этого используется mod rewrite, который должен поддерживать ваш сервер на apache (большинство платных хостингов поддерживают).

И так, создаем в корне папку, например partner, в ней файл sape.php.

В файл вставляем следующий код:

<?php $URL="http://www.sape.ru/r.77b51afb98.php";
header("Location:$URL");
exit();
?>

URL естественно заменяем на свой.

Далее в корне сайта открываем файл .htaccess (или создаем если его нет), и в него вставляем слеудующее:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^([A-Za-z]+)$ partner/$1.php [L]
</IfModule>

Первый код делает редирект пользователя на указанный URL, второй делает первый файл, находящийся по адресу /partner/sape.php, доступным по адресу /sape.

Соответственно можно создавать файлы с любыми именами, где имя файла (XXX), например partner/XXX.php будет соответствовать адресу /XXX

2 Comments | Filed under Fix, Новичкам

Прозрачный PNG в IE 6

Достигается на самом деле довольно-таки легко. Берем прозрачный png, берем следующий код:
<script type="text/javascript">
function fixPNG(element)
{
//Если браузер IE версии 5.5-6
if (/MSIE (5\.5|6).+Win/.test(navigator.userAgent))
{
var src;
if (element.tagName==’IMG’) //Если текущий элемент картинка (тэг IMG)
{
if (/\.png$/.test(element.src)) //Если файл картинки имеет расширение PNG
{
src = element.src;
element.src = "/blank.gif"; //заменяем изображение прозрачным gif-ом
}
}
else //иначе, если это не картинка а другой элемент
{
//если у элемента задана фоновая картинка, то присваеваем значение свойства background-шmage переменной src
src = element.currentStyle.backgroundImage.match(/url\("(.+\.png)"\)/i);
if (src)
{
src = src[1]; //берем из значения свойства background-шmage только адрес картинки
element.runtimeStyle.backgroundImage="none"; //убираем фоновое изображение
}
}
//если, src не пуст, то нужно загрузить изображение с помощью фильтра AlphaImageLoader
if (src) element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=’" + src + "‘,sizingMethod=’scale’)";
}
}
</script>
Вставляем ПЕРЕД следующим html:
<div style=”background: url(some.png) no-repeat;” class=”someclass”><a href=”#”>Ссылка</a></div>
Или таким, если png вставляется не бекграундом:
<div class=”someclass”><img src=”some.png” /></div>
Остается добавить в css следющее:
.someclass {
filter:expression(fixPNG(this));
}

Все, теперь png во всех браузерах прозрачная!
Остается добавить – что если сверху png присутствуют какие-либо ссылки, или интерактивные поля (формы и т.п.), то они будут ниже картинки и не кликабельны, решается это просто, добавляется объекту, который нужно поставить выше position: relative;
На данном примере это выглядит так:
.someclass a {
position: relative;
}

17 Comments | Filed under Fix, Новичкам

Замена слоев, или как поменять DIV местами

Небольшой FAQ по теме:
Q: Что это?
A: Имеем такую конструкцию:

Слой 1
Some text
Слой 2

В итоге это будет выглядеть так:
Слой 1
Some text
Слой 2
После небольших махинаций с ява скриптом, это будет выглядеть так:
Слой 2
Some text
Слой 1
При этом код останется прежним. Можно это сделать и позиционированием, но с условием, что мы не знаем какой height у Some Text – это сделать не получится.
Q: В каких случаях применять?
A: Например баннеры. Допустим, есть баннер в шапке, баннер в правой колонке и баннер в подвале. Загружаются они по мере загрузки страницы, что немного тормозит всю загрузку. Мы же, путем подмены слоев, сначала загрузим страницу, а потом уже выскочат все баннеры одновременно.
И так, код:

a
b



Вот и все. Последнее, что надо знать – скрипт меняет содержимое слоев, учтите это, применяя стили для содержимого.

No Comments | Filed under Fix

Max-width, max-height, min-height, min-width в IE

Проблема – не работают эти свойства в Internet Explorer 6 и ниже версий. Решений в интернете нашел много, но большинство вешали браузер, либо просто не работали. Что заметил, совместная попытка использования замены max-height и max-width – приведет к сносу башни у IE, и он попросту зависнет. Но, ближе к делу:
max-width
#block {
max-width:100px;
width: expression(this.offsetWidth > 101?"100″:"this.offsetWidth");

}
max-height
#block {
max-height:100px;
height: expression(this.offsetHeight > 101?"100″:"this.offsetHeight");
}

Принцип действия понять не сложно - "если размер больше 100, ставь 100″

Что до min-height и min-width - тут проще, в IE6 они равносильны обычным width и height, и нужны только для firefox и opera.

9 Comments | Filed under Fix, Новичкам


www.seozavr.ru - автоматическое размещение статей с прямыми ссылками