Единый форум поддержки

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Единый форум поддержки » Архив » Функция установки и автоконтроля положения Рекламного Баннера


Функция установки и автоконтроля положения Рекламного Баннера

Сообщений 1 страница 20 из 55

1

Очередные Акции Блокировки форумов за скрытия-перемещения баннеров, навели на мысли, что данное направление еще слабо автоматизировано и слабо контролируемо:

К Внедрению предлагается такой Вариант:

<script type="text/javascript">
var OffsetUser=[];
function SetBannerUserPosition(top,left){OffsetUser.push(top);OffsetUser.push(left);
}

function SetoBanner(){//Тест USER-установок
function TST_OffsetUser(){Lmin=-503;Lmax=33;TopMin=0;TopMax=544;
if(typeof(OffsetUser[0])=='number'&&typeof(OffsetUser[1])=='number'){//
if(OffsetUser[0]>=0&&OffsetUser[0]<=544&&OffsetUser[1]>=-503&&OffsetUser[1]<=33){return;}}OffsetUser=false;return;}

var TopTh,LftThCtr;PrewLT=[];
Hb=60/*высота банера*/;Wb=468/*Ширина банера*/;LftMaxCtr=(1003)/2;TopMax=604-Hb;
//КОНТРОЛЬ СМЕЩЕНИЙ ЭЛЕМЕНТА ОТ ЦЕНТРА И ВЕРХА-НИЗА
function Tst_element(Selek,first){W=$(window).width();offset=Selek.offset();Tpad=parseFloat(Selek.css("padding-top"));
TopTh=(offset.top+Tpad);Lpad=parseFloat(Selek.css("padding-left"));LftThCtr=(offset.left+Lpad-W/2);absL=Math.abs(LftThCtr);
PrewLT[0]=TopTh;if(TopTh>=TopMax){PrewLT[0]=TopMax-TopTh};PrewLT[1]=LftMaxCtr-absL;if(LftThCtr>0){PrewLT[1]=PrewLT[1]-Wb}
if(typeof(first)=='boolean'){if(first){first={};if(PrewLT[0]<0||PrewLT[1]<0){PrewLT[0]=TopTh=0;LftThCtr=LftMaxCtr-Wb;PrewLT[1]=0}}}
}

function TST_Hide(s,pT,pL){B="#pun-"+s;if(($(B).length)){Tst_element($(B));
if(Math.abs(Math.abs(PrewLT[1])-Math.abs(pL))>21||Math.abs(Math.abs(PrewLT[0])-Math.abs(pT))>7){
alert("Отправлен \"КУК-Report\":\nНеконтролируемое Перемещение Банера!,\n\
Смещения: Верх:"+PrewLT[0]+",От центра:"+PrewLT[1])};
}else{alert("Отправлен \"КУК-Report\":\nБаннер Скрыт!,\n\
Смещения: Верх:"+pT+",От центра:"+pL)};}

//999999999999999= OСНОВНОЕ ТЕЛО: = 99999999999999999//
$(function(){S=Math.round(Math.random()*10000000);
  TST_OffsetUser();if(!OffsetUser){Tst_element($("#pun-title td.title-logo-tdr"),true);
  sek=Math.round(4000+120/*000*/*Math.random());setTimeout(function(){TST_Hide(S,PrewLT[0],PrewLT[1])},sek);}else
  {TopTh=OffsetUser[0];LftThCtr=OffsetUser[1]}
  $("body").prepend('<div id="pun-'+S+'" style="top:'+TopTh+'px;left:50%;margin-left:'+LftThCtr+'px;position:absolute!important;z-index:10000;width:'+Wb+'px;height:'+Hb+'px;"></div>');
Elem=$("#pun-title td.title-logo-tdr");Elem.find('script').remove();$('#pun-'+S).append(Elem.html());
Elem.html('<div id="Equ" "height:60px;width:480px;"></div>')
});
}SetoBanner()
//999999999999999 = END ТЕЛО = 99999999999999999//
</script>


Пользовательская часть -опционально(может отсутствовать)

<script type="text/javascript"> //Юзер Установки
/* Cмещение позиции Банера,задаваемого форум-aдминистратором относительно центра и верха экрана
(Первая цифра - смещение по вертикали; Вторая - по горизонтали;
Верхний край Баннера(Относительно верха экр.) можно смещать до 0px; - вверх;
Верхний край Баннера(Относительно верха экр.) можно смещать до 544px; - вниз;
Левый край Баннера(Относительно центра экр.) можно смещать до +33px -> вправо(Поскольку учитываем ширину баннера=468px;
Левый край Баннера(Относительно центра экр.) можно смещать до -503px;<- влево;
*/

SetBannerUserPosition(432,-240)

</script>

Пояснения:
Функция
1. Тестирует Есть ли юзер-установки в Допустимых Админом сервиса пределах, и если есть и допустимы - устанавливает верхний баннер согласно пользовательским установкам
* Пользовательские Установки - это вызов функции:

SetBannerUserPosition(432,-240)
где первая цифра - смещение от центра левого края баннера, вторая от верха

2. Если установки отсутствуют, либо не в Допустимых пределах, тестируется  возможная позиция банера согласно текущего элемента #pun-title td.title-logo-tdr, если позиция в допустимых пределах, новая  оболочка позиционируеся в соотвествии с позицией в исходном элементе, если нет, Баннер позиционируется в правый верхний угол экрана ( в допустимой позиции для разрешения 1024
3. Рандомно, через промежуток времени - позиция и скрытие баннера вновь проверяюца и если есть подвижки, изменение позиции, скрытие баннера, - Появляется Раздражающее-Предупреждающее Окно(возможна и отправка данных на сервер


Ps: Неокрашенная часть  удобно устанавливается в Скрипт сервиса в хидер. Окрашенная, при желании пользователя сделать свои установки местоположения верхнего баннера, - В HTML верх,....(Возможно первую часть установить совместно с тизером в #pun-title td.title-logo-tdr,- тогда пользовательские установки переместить в HTML низ)


(*Вышеприведенный полный код Работает И сейчас приустановке в HTML верх

Тестирующий Код сss  для Изменения Положений Баннера

<style>/**/
#pun-title td.title-logo-tdr{
  display:block!important;
  position:absolute!important;
  height:60px!important;
  padding-left:0px!important;
  width:468px!important;
  left:50%;
  margin-left:-108px!important;
  margin-top:120px!important;
  padding-top:0px!important;
  border:solid blue 1px;
}
</style>

Меняя значения Красным, - можно тестировать происходящее при выходе значений положения баннера из Допустимых


Можно пробовать и скриптами ( Учтите что время повторной проверки - рандомно
Защита от дурака при вводе невалидных значений для юзер-установок - присутствует.

Отредактировано Deff (Сб, 23 Фев 2013 14:39:20)

+3

2

Код жесть, но за идею +  :glasses:

+1

3

RUSSIAN_GOBLIN
Мну могёт его сократить в три раза - но это может сделать Админ, поскольку при сокращении - не читаем, а по смыслу - сократиь практически ничо низзя, кроме названия переменных комментов и сделать упаковку

0

4

RUSSIAN_GOBLIN
Ксать без комментов - короче текущего

0

5

Мой вариант с отсылкой на сервер МуВВ сообщения о попытке скрытия баннеров:

Код:
<script type="text/javascript">
try{jQuery.ready();}catch(e){}
try{
$(document).ready(function(){
var report =['','','','',''];
	el = ['div#pun-title','table#title-logo-table','tr#title-logo-tr','tbody#title-logo-tbody','td#title-logo-tdr','iframe#bs-top-iframe','.title-logo-tdr a img','.title-logo-tdr iframe','.title-logo-tdr object','div#tieser-bottom','iframe#bs-bottom-iframe'];
	for (var key in el){
if (!$(el[key]).length) continue;
if ($(el[key]).css('opacity') && $(el[key]).css('opacity') < 1 || $(el[key]).children().css('opacity') && $(el[key]).children().css('opacity') < 1 || $(el[key]).parent().css('opacity') && $(el[key]).parent().css('opacity') < 1){
	ocss = 'opacity:1 !important; -moz-opacity:1 !important; -khtml-opacity: 1 !important; filter:alpha(opacity=100) !important';
	report[0]='1';
	$(el[key]).css('opacity',1);
	$(el[key]).css('cssText',ocss);
	$(el[key]).children().css('opacity',1);
	$(el[key]).children().css('cssText',ocss);
	$(el[key]).parent().css('opacity',1);
	$(el[key]).parent().css('cssText',ocss);
	$(el[key]).find("*").css('opacity',1);
	$(el[key]).find("*").css('cssText',ocss);
}
if ($(el[key]).css('display') && $(el[key]).css('display') == 'none'){
      report[1]='1';
	$(el[key]).css('display','block');
	$(el[key]).css('cssText','display:block !important');
}
if ($(el[key]).css('visibility') && $(el[key]).css('visibility') == 'hidden'){
      report[2]='1';
	$(el[key]).css('visibility','visible');
	$(el[key]).css('cssText','visibility:visible !important');
}
if ($(el[key]).css('z-index') && $(el[key]).css('z-index') < 0){
      report[3]=$(el[key]).css('z-index');
	$(el[key]).css('z-index','1000');
	$(el[key]).css('cssText','z-index:1000 !important');
}
if ($(window).width() > 800 && $(el[key]).offset().left !== null && $(el[key]).offset().left > $(window).width()-$(el[key]).width() || $(el[key]).offset().top !== null && ($(el[key]).offset().top > $(document).height()-$(el[key]).height() || $(el[key]).offset().top < 0)){
      report[4]=$(el[key]).offset().top+','+$(el[key]).offset().left;
	$(el[key]).css({'position':'static'});
	$(el[key]).css('cssText','position:static !important;');
}
	}
	for (var num_abuse in report){
if (!$(report[num_abuse]).length) continue;
if(report[num_abuse]!=''){$.post('banner_control.php', {'abuse[]':report}); break;}
}	
});
}catch(e){}
</script>

Должен быть файл по адресу: http://forum.service.ru/banner_control.php
Он должен принимать сообщения и вписывать их в таблицу БД.  Admin через интерфейс админки МуВВ будет  периодически проверять - есть ли сообщения о нарушениях. Просмотрев список новых уведомлений о нарушениях, можно будет заблокировать форумы, которые нарушают правила сервиса.

0

6

Все подобные скрипты -

RUSSIAN_GOBLIN написал(а):

Он должен принимать сообщения и вписывать их в таблицу БД.  Admin через интерфейс админки МуВВ будет  периодически проверять - есть ли сообщения о нарушениях. Просмотрев список новых уведомлений о нарушениях,

Все Подобные скрипты -

а) Создают нагрузку на сервер,
b) Не предоставляют никаких удобств пользователю
с) Не могут исправить ситуёвину самостоятельно, без вмешательства извне(карочь сплошной концлагерь - шаг-влево - шаг вправо ... пых -пых
Проще уж повесить автораздражалку,Сами исправят


Ps :glasses:   В качестве раздражалки, повесить новую рекламу во весь Лист, закрытием по клику - Тады клики уж будут на всех страницах  :rofl:

Отредактировано Deff (Ср, 4 Апр 2012 16:15:33)

0

7

RUSSIAN_GOBLIN написал(а):

$(el[key]).css('opacity',1);
$(el[key]).css('cssText',ocss);
$(el[key]).children().css('opacity',1);
$(el[key]).children().css('cssText',ocss);
$(el[key]).parent().css('opacity',1);
$(el[key]).parent().css('cssText',ocss);
$(el[key]).find("*").css('opacity',1);
$(el[key]).find("*").css('cssText',ocss);

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

0

8

Deff написал(а):

а) Создают нагрузку на сервер,

Нагрузка не велика при грамотной реализации серверной части.

Deff написал(а):

b) Не предоставляют никаких удобств пользователю

А они должны быть?  :tired:

Deff написал(а):

Не могут исправить ситуёвину самостоятельно

Не правда, мой скрипт исправляет.
Внимательно посмотри на код.

Deff написал(а):

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

Эти строки нужны, эти строки важны   ^^

0

9

RUSSIAN_GOBLIN написал(а):

А они должны быть?

RUSSIAN_GOBLIN
Гы - Нафега банить и принуждать, коль 90% проблем из-за незнания допустимых значений и кодов для правильной подвижки, ну и 5 % - наглежь, который легко подавляецо автоконтролем и ухудшением положения попыткой скрытия. чо и реализовано в первом посте темы

Отредактировано Deff (Ср, 4 Апр 2012 16:23:01)

0

10

Deff, банить необходимо за нарушение правил.
Не знание правил не снимает ответственности.
А если не знают как двигать можно и как нельзя, пусть и не двигают.

Deff написал(а):

ухудшением положения попыткой скрытия

Это и сейчас есть в установленном на форумах коде. В моём коде правда эффективней.

0

11

Следуя

RUSSIAN_GOBLIN написал(а):

А если не знают как двигать можно и как нельзя, пусть и не двигают.

Следуя таким курсом, ни один младенец не научился бы ходить, ты кодить, и тд.,
Лозунг - Не умеешь ходить - Не ходи!

0

12

Deff написал(а):

Лозунг - Не умеешь ходить - Не ходи!

Да, надо менять лозунги на:

Не умеешь водить - бери и гоняй на тачке!

Не умеешь управлять самолётом - заводи двигатели и бери курс на башни-близнецы!

Не умеешь управлять атомной электростанцией - просто жми на все кнопки на панеле управления!  http://www.kolobok.us/smiles/standart/grin.gif

0

13

..

Отредактировано Deff (Чт, 12 Апр 2012 22:56:19)

+1

14

RUSSIAN_GOBLIN
Deff
Когда сей ужас начнёт работать?? :confused:  :D Вы там сделайте чтобы сначала при неправильном положении начинал орать как сирена, и чтобы было хотя бы сутки времени исправить! А то знаю вас, сразу в БАН! :O

0

15

ruslan_as
Скрипт автовыправляет положение банера,(даже при ошибках пользователя) устанавливая его в рамки заданные сервисом и никому ничо не мешает, если ток не начинают активное противодействие скрипту - другими кодами скриптов(активными ява-скрипт действиями)

Отредактировано Deff (Чт, 5 Апр 2012 22:43:47)

0

16

Deff
Первый скрипт ставить полностью, чтобы тестировать на обходимость?

0

17

rps
1-е -Ти может и сломаешь, но скрипт более удобный для юзера и короче сейчасного и многие параметры не нужаюца в контроле(которые контролируются теперешним скриптом) да и ломать тяжелее, сегодняшний ломаецо css(ом) - Ти с этими пунктами согласен ?

2.- е Пробуй сломать, - допустим установка по умолчанию(в местоположение, где он и стоял ранее в #pun-title td.title-logo-tdr

Отредактировано Deff (Вс, 8 Апр 2012 22:47:00)

0

18

Deff
Так, мне надо его просто передвинуть, любыми средствами, да?

0

19

rps
Ну ды ток без всплывающего окошка и за пределы допусков (Желательно с учетом пожелания 2

Отредактировано Deff (Вс, 8 Апр 2012 22:50:41)

0

20

Deff
Что-то я не понял, что он делает? http://tps.bbmy.ru/. Баннер практически там, где и раньше.

0


Вы здесь » Единый форум поддержки » Архив » Функция установки и автоконтроля положения Рекламного Баннера