2015-05-23 4 views
4

Внутри страницы у меня есть сторонний рекламный контент, который создается внешним скриптом. Этот контент занимает немного времени, чтобы загрузить. Я хотел бы удалить разрыв строки из рекламного контента - для этого нужно подождать, пока загрузится внешний скрипт, и все функции, вызываемые внутри этого скрипта, перестали работать. Я возился со следующей идеей, но я предполагаю, что это только ждет, пока не будет загружен внешний скрипт:Удаление элемента DOM из элемента, который создается внешним скриптом

$.getScript("http://www.external_site.com/widget.js").done(function(data, textStatus, jqxhr) { 
    $('.result').find('br').remove(); 
}); 

Какой самый лучший способ ждать, пока внешний скрипт не выполняет всех своих DOM манипуляций, перед вызовом .remove()?

+0

У вас есть контроль над внешним скриптом сайта? Вы можете запустить событие по завершении, которое вы могли бы затем основать на своем скрипте удаления. – gautsch

+0

@gautsch - к сожалению, в внешнем скрипте, который я могу манипулировать, не может быть ничего, кроме нескольких параметров, чтобы настроить рекламу (запрос, местоположение и т. Д.). – Boa

+1

Просто уточнить: загружено ли ваше объявление в iframe? – jmargolisvt

ответ

5

Один из подходов, похоже, прислушивается к событиям onreadystatechange и load, которые запускаются из вновь созданных и вставленных элементов <script>, в которых выполняется JavaScript.

Это работает в связанном (простой) демо, но я не могу подтвердить его надежности для крупных проектов:

// listening for the onreadystatechange and/or load 
// events fired from the newly-added "script" elements: 
$('script').on('onreadystatechange load', function (e) { 
    // performs the following simple/contrived functionality: 
    $('body').find('br').remove(); 
}); 

JS Fiddle demo.

Ссылки:

+0

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

+0

Это позаботится об этом. Благодаря! – Boa

Смежные вопросы