Как проверить, что-нибудь видно в div - PullRequest
1 голос
/ 21 февраля 2010

У меня есть скрипт на моей странице, который загружает контент из рекламной сети в div. Эта рекламная сеть имеет уровень заполнения 80%, т. Е. Она показывает рекламу только 80% времени, остальные 20% времени она не показывает рекламу. К сожалению, рекламная сеть не предоставляет мне обратного вызова, чтобы сообщить мне, когда она не показала рекламу. Как следствие, иногда этот div показывает объявление, а иногда оно пустое.

Это выглядит ужасно на моем сайте и делает меня грустной пандой. Есть ли способ проверить, является ли какой-либо контент видимым внутри div? Если бы я знал это, я бы знал, когда показывать div, а когда скрывать.

Звучит как трудная проблема, но я хотел посмотреть, есть ли какое-нибудь решение. Вам, гуру.

Ответы [ 4 ]

0 голосов
/ 21 февраля 2010

Помогла бы некоторая фактическая разметка, но если я правильно читаю вас, у вас чаще всего есть пустой div, а затем иногда есть iframe или вложенные iframes или что-то подобное ужасающе.

Итак, я бы использовал два параллельных решения: во-первых, самое простое решение jQuery было бы:

$("#ad-container div:empty").hide();

(замените #ad-container div тем, что вы используете.)

Между тем, для случаев, когда это не сработает (неприятные фреймы и прочее), используйте CSS, чтобы создать резервную копию фонового изображения, возможно, рекламируя себя или просто делая пространство лучше. Просто базовый, вот так:

#ad-container { background-image: url(...);background-repeat:none; }

Когда будет показано объявление, изображение будет закрыто. Когда это не так, резервная копия будет там для вас.

0 голосов
/ 21 февраля 2010

Я бы сказал, что лучшим решением будет поиск более надежной рекламной сети. Однако вы можете проверить наличие любого элемента DOM, используя свойство length объекта jQuery. Например:

if (!$('#adframe img').length) {
  // the ad image doesn't exist, so do something to deal with it
}

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

0 голосов
/ 21 февраля 2010

Вот, пожалуйста, при условии, что видимость Div не установлена ​​рекламой. Это sudo-код.

1.) Присвойте переменную div, используя идентификатор или имя

var myDiv=document.getElementsByName("divName");

2.) Поместите внутренний текст div в переменную

var myAd = getInnerText(myDiv);

3.) Проверьте внутренний текстовый div, если он нулевой

if(typeof(myAd) == '' || myAd == null)

4.) Изменение видимости DIV на основе текста между тегами DIV.

0 голосов
/ 21 февраля 2010

Есть ли у IFrame тег изображения, когда объявление успешно показывается?

...