Обнаружьте отказ загрузить содержание iframe

Примечание: Неинициализированное смещение строки: *

Как видно из названия, возникает такой тип ошибки, когда вы, скорее всего, пытаетесь перебрать или найти значение из массива с не- существующий ключ.

Считаем, что вы пытаетесь показать каждую букву из $string

$string = 'ABCD'; 
for ($i=0, $len = strlen($string); $i <= $len; $i++){
    echo "$string[$i] \n"; 
}

. Вышеприведенный пример сгенерирует ( онлайн-демонстрацию ):

A
B
C
D
Notice: Uninitialized string offset: 4 in XXX on line X

И, как только скрипт заканчивается эхом D, вы получите ошибку, потому что внутри цикла for() вы сказали PHP, чтобы показать вам от первого до пятого символа строки из 'ABCD' Что, существует, но поскольку цикл начинает отсчитываться от 0 и эха D к моменту достижения значения 4, он выдает ошибку смещения.

Аналогичные ошибки:

53
задан Mistalis 25 April 2017 в 03:30
поделиться

3 ответа

Если Вы управляете iframe страницей (и страницы находятся на том же доменном имени), стратегия могла быть следующие:

  • В родительском документе, инициализируйте переменную var iFrameLoaded = false;
  • , Когда iframe документ загружается, установите эту переменную в родителе к true вызов из iframe документа функция родителя (setIFrameLoaded();, например).
  • проверяют iFrameLoaded флаг с помощью timer объект (установите таймер на предпочтительный предел тайм-аута) - если флаг является все еще ложным, можно сказать, что iframe регулярно не загружался.

я надеюсь, что это помогает.

14
ответ дан Gordon 7 November 2019 в 08:54
поделиться

Я недавно имел эту проблему и должен был обратиться к установке JavaScript, Опрашивающего действие на Родительской Странице (который содержит тег IFRAME). Эта функция JavaScript проверяет содержание IFRAME на явные элементы, которые должны только существовать в ХОРОШЕМ ответе. Это предполагает, конечно, что Вы не должны иметь дело с нарушением "той же политики источника".

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

После предопределенного времени и/или # неудачных попыток обнаружить ожидаемый Элемент (элементы), JavaScript изменяет атрибут SRC IFRAME (для запроса от моего Сервлета) Удобная для пользователя Ошибочная Страница в противоположность отображению типичного сообщения ОШИБКИ HTTP. JavaScript мог также столь же легко изменить атрибут SRC для выполнения совершенно различного запроса.

function checkForContents(){
var contents=document.getElementById('myiframe').contentWindow.document
if(contents){
    alert('found contents of myiframe:' + contents);
    if(contents.documentElement){
        if(contents.documentElement.innerHTML){
            alert("Found contents: " +contents.documentElement.innerHTML);
            if(contents.documentElement.innerHTML.indexOf("FIND_ME") > -1){
                openMediumWindow("woot.html", "mypopup");
            }
        }
    }
}

}

8
ответ дан Chris 7 November 2019 в 08:54
поделиться

Я думаю, что событие pageshow запускается для страниц с ошибками. Или, если вы делаете это из Chrome, тогда вы проверяете запрос слушателя прогресса, чтобы узнать, является ли он каналом HTTP, и в этом случае вы можете получить код состояния.

Что касается зависимостей страниц, я думаю, вы можете сделать это только из chrome путем добавления прослушивателя событий onerror, и даже в этом случае он будет находить ошибки только в элементах, а не в фонах CSS или других изображениях.

1
ответ дан 7 November 2019 в 08:54
поделиться
Другие вопросы по тегам:

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