dplyr с 0,4 реализовал все те объединения, в том числе external_join, но стоит отметить, что для первых нескольких релизов он использовал не для того, чтобы предлагать внешний_join, и в результате было много действительно плохой взломанный обходной код пользователя, плавающий вокруг (вы все еще можете найти это в ответах SO и Kaggle с того периода).
Основные моменты выделения :
v0.1.3 (4/2014)
Обходные решения для комментариев хайли в этой проблеме:
Могут быть несколько возможных причин, по которым функция .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.
Способ only - это если кадр находится в том же домене, и в этом случае вы можете сделать это из родителя:
iframe.contentWindow.onerror = function(){
// handle error
}
Ответ зависит от того, есть ли у вас контроль над кодом iframe и независимо от того, является ли он одним и тем же доменом.
Если в этом же домене вы можете сделать следующее, чтобы установить функцию обработки ошибок из документа для обертывания:
document.getElementById("myiframe").contentWindow.onerror=function() {
alert('error!!');
return false;
}
убедитесь, что вы дождались завершения загрузки iframe до установки обработчика ошибок.
Если это не тот же домен, но у вас есть контроль над iframe content (оба домена находятся под вашим контролем), вы можете обмениваться данными с внешним фреймом с помощью инфраструктуры междоменной связи (google it или самостоятельно ее создать), то есть уловить ошибку в iframe, установив обработчик onerror из iframe и отправить его через фреймворк во внешний документ.
Если это не тот же домен, и у вас нет контроля над iframe, нет никакого способа, чтобы внешний документ знал, что происходит внутри него, потому что ограничений безопасности.