Я работаю над проектом, в котором часть DOM определяется после запроса jQuery AJAX.Код отлично работает в Google Chrome, Mozilla Firefox и даже Edge.Проблема возникает со всеми (насколько я вижу) современной версией Safari.
Похоже, что запрос в Safari вообще не выполняется - но он не выдает никаких ошибок, поэтому другой JavaScript настраница (которая не включает запросы POST / GET) работает как задумано.В консоли также нет ошибок.
Вот код, который я использую для выполнения одного из запросов:
$(document).ready(function(){
$.ajax({
type: 'POST',
url: '/include/userbar.php',
async: false,
}).done(function(data){
if(data.replace('Invalid Permissions') == data){
$('#userBarContain').html(data);
} else {
$.ajax({
type: 'POST',
url: '/include/guestbar.php',
async: false
}).done(function(data){
$('#userBarContain').html(data);
});
}
});
По сути, мы делаем AJAXзапрос на $(document).ready()
, и если возвращенные данные являются ошибкой Invalid Permissions
, мы делаем второй запрос на guestbar.php
.Независимо от того, куда мы отправляем сообщения, мы помещаем данные, возвращенные в элемент $('#userBarContain')
DOM.
В Safari я не вижу ни успешных, ни резервных данных, вставляемых в DOM.Я читал, что Safari не всегда хорошо работает с async
запросами, но даже с async: false
я вижу те же проблемы.
РЕДАКТИРОВАТЬ: После получения доступа к современнымMacbook, я обнаружил, что на самом деле это был селектор CSS3, который я использовал в другом месте, который вызывал эту проблему (без ошибок в консоли, если я не вызвал функцию снова вручную).Я хотел обновить это для будущих поисков Google, которые также могут столкнуться с этой проблемой.
Селектор был $('*[name^="option["')
.Судя по всему, Safari плохо работает с этим селектором.После добавления класса к объекту (ам), который мне нужно было перебрать, проблема, похоже, решена.