Обнаружение, когда содержание Iframe загрузилось (Перекрестный браузер)

это компактный способ сделать это, используя zip :

lst = [('John', '123'), ('Alex','456'),('Nate', '789')]

name, userid = list(zip(*lst))

print(name)   # ('John', 'Alex', 'Nate')
print(userid)  # ('123', '456', '789')

заметить, что результаты сохраняются в (неизменяемом) tuple с; если вам нужно (мутирует) list, вам нужно разыграть.

84
задан David Snabel-Caunt 26 February 2014 в 11:09
поделиться

2 ответа

определять, когда загружен iframe и готов ли его документ?

Идеально, если вы можете получить iframe сказать вам сам из сценария внутри кадра. Например, он может напрямую вызвать родительскую функцию, чтобы сообщить, что он готов. При выполнении кросс-фреймового кода всегда требуется осторожность, поскольку все может происходить в том порядке, который вы не ожидаете. Другая альтернатива - установить 'var isready = true;' в своей собственной области, и иметь родительский сценарий, сниффинг для «contentWindow.isready» (и добавить обработчик загрузки, если нет).

Если по какой-то причине нецелесообразно, чтобы документ iframe взаимодействовал, вы получили традиционная проблема гонки нагрузки, а именно, что даже если элементы расположены рядом друг с другом:

<img id="x" ... />
<script type="text/javascript">
    document.getElementById('x').onload= function() {
        ...
    };
</script>

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

Способы выхода из гонки загрузки:

  1. в IE вы можете использовать свойство 'readyState', чтобы увидеть, загружено ли что-то уже;

  2. , если допустимо наличие элемента, доступного только с включенным JavaScript, вы можете динамически создавайте его, устанавливая функцию события onload перед настройкой источника и добавляя на страницу. В этом случае его нельзя загрузить до установки обратного вызова;

  3. старый способ включения его в разметку:

Встроенный Обработчики «onsomething» в HTML - почти всегда неправильные вещи, которых следует избегать, но в этом случае иногда это наименее плохой вариант.

  • Если приемлем доступ к элементу, доступному только с включенным JavaScript, вы можете создать его динамически, установив функцию события «onload» перед настройкой источника и добавлением на страницу. В этом случае его нельзя загрузить до установки обратного вызова;

  • старый способ включения его в разметку:

  • Встроенный Обработчики «onsomething» в HTML - почти всегда неправильные вещи, которых следует избегать, но в этом случае иногда это наименее плохой вариант.

  • Если приемлем доступ к элементу, доступному только с включенным JavaScript, вы можете создать его динамически, установив функцию события «onload» перед настройкой источника и добавлением на страницу. В этом случае его нельзя загрузить до установки обратного вызова;

  • старый способ включения его в разметку:

  • Встроенный Обработчики «onsomething» в HTML - почти всегда неправильные вещи, которых следует избегать, но в этом случае иногда это наименее плохой вариант.

    70
    ответ дан alex 24 November 2019 в 08:37
    поделиться

    См. это сообщение в блоге. Он использует jQuery, но он должен помочь вам, даже если вы его не используете.

    В основном вы добавляете это в свой document.ready ()

    $('iframe').load(function() {
        RunAfterIFrameLoaded();
    });
    
    47
    ответ дан Mark Amery 24 November 2019 в 08:37
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: