Как я могу получить исключение, которое было выбрано в iframe? [Дубликат]

dplyr с 0,4 реализовал все те объединения, в том числе external_join, но стоит отметить, что для первых нескольких релизов он использовал не для того, чтобы предлагать внешний_join, и в результате было много действительно плохой взломанный обходной код пользователя, плавающий вокруг (вы все еще можете найти это в ответах SO и Kaggle с того периода).

Основные моменты выделения :

v0.5 (6/2016)

  • Обработка для типа POSIXct, часовых поясов, дубликатов, разных уровней факторов. Более эффективные ошибки и предупреждения.
  • Новый аргумент суффикса для управления тем, какие суффиксные имена дублированных переменных получают (# 1296)

v0.4.0 (1/2015)

  • Внедрить правое соединение и внешнее соединение (# 96)
  • Мутирующие объединения, которые добавляют новые переменные в одну таблицу из совпадающих строк в другой. Фильтрация соединений, которые фильтруют наблюдения из одной таблицы на основе того, соответствуют ли они наблюдению в другой таблице.

v0.3 (10/2014)

  • Теперь можно оставить left_join разными переменными в каждой таблице: df1%>% left_join (df2, c ("var1" = "var2"))

v0.2 (5/2014)

  • * _ join () больше не переупорядочивает имена колонок (# 324)

v0.1.3 (4/2014)

Обходные решения для комментариев хайли в этой проблеме:

  • right_join (x, y) совпадает с left_join (y, x) в терминов строк, только столбцы будут разными порядками.
  • external_join - это в основном union (left_join (x, y), right_join (x, y)) - то есть сохранить все строки в обоих кадрах данных.

11
задан Kromster 4 June 2014 в 05:47
поделиться

3 ответа

Могут быть несколько возможных причин, по которым функция .onError() не работает, возможно, из-за URL-адреса перекрестных доменов для этого вы должны выполнить проверку перед действительным лаянием iFrame и для этого использовать

var url = "google.com"
var loading_url = "/empty.html"
document.getElementById("iframe").src = loading_url;
$.ajax({
url: url,
type: 'GET',
complete: function(e, xhr, settings){
     if(e.status === 200){
          document.getElementById("iframe").src = url;
     }
  }
});

Это не будет работать с перекрестным доменом, в этом случае код состояния равен 0.

Еще одна вещь, которую нужно проверить, - обработчик .onError(), пожалуйста, проверьте снизу образец, если он соответствует вашим условиям

Как я могу обрабатывать ошибки при загрузке iframe?

Существует множество других опций или настроек для обработки таких ошибок:

if (frameDoc.title == 'title of page after expection occur')

также выполнит работу, используя событие .onLoad() iFrame.

3
ответ дан Community 21 August 2018 в 10:56
поделиться

Способ only - это если кадр находится в том же домене, и в этом случае вы можете сделать это из родителя:

iframe.contentWindow.onerror = function(){
    // handle error
}
0
ответ дан Mark Kahn 21 August 2018 в 10:56
поделиться
  • 1
    не работает для меня :( – Arif Hasan 13 June 2011 в 11:05
  • 2
    проверьте следующий код. – Arif Hasan 13 June 2011 в 11:05
  • 3
    & Lt; & HTML GT; & Lt; & головка GT; & lt; script type = "text / javascript" & gt; & gt; & gt; & gt; var frm123 = document.getElementById (& quot; frm123 & quot;); frm123.contentWindow.onerror = function () {alert ('error caught'); } function loadData () {var oRTE = document.getElementById (& quot; frm123 "). contentWindow.document; oRTE.open (); oRTE.write (txt123.value); oRTE.close ();} & lt; / script & gt; & Lt; / головка & GT; & Л; тело & GT; & lt; входной тип = "кнопка" OnClick = & Quot; LoadData (); & Quot; значение = & Quot; нагрузка & Quot; & GT; & lt; input type = "text & quot; ID = & Quot; txt123 & Quot; & GT; & lt; iframe id = "frm123" & gt; & gt; & Lt; / тело & GT; & Lt; / HTML & GT; – Arif Hasan 13 June 2011 в 11:06
  • 4
    @ArifHasan Напишите выше код в своем вопросе, чтобы другой мог помочь вам – Hkachhia 26 December 2012 в 13:57

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

Если в этом же домене вы можете сделать следующее, чтобы установить функцию обработки ошибок из документа для обертывания:

document.getElementById("myiframe").contentWindow.onerror=function() {
    alert('error!!');
    return false;
}

убедитесь, что вы дождались завершения загрузки iframe до установки обработчика ошибок.

Если это не тот же домен, но у вас есть контроль над iframe content (оба домена находятся под вашим контролем), вы можете обмениваться данными с внешним фреймом с помощью инфраструктуры междоменной связи (google it или самостоятельно ее создать), то есть уловить ошибку в iframe, установив обработчик onerror из iframe и отправить его через фреймворк во внешний документ.

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

19
ответ дан TheZuck 21 August 2018 в 10:56
поделиться
  • 1
    И что я могу сделать, если исключение произойдет во время загрузки страницы? – Ai_boy 26 December 2012 в 15:46
  • 2
    то у вас будет проблема, так как вы не можете контролировать это извне. – TheZuck 26 December 2012 в 16:07
Другие вопросы по тегам:

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