Facebook дает" небезопасную попытку JavaScript получить доступ к кадру с URL " ошибка в Chrome


мой пример приложения Facebook отлично работал вчера в Chrome. Страница интегрирует Silverlight ad Facebook с помощью JavaScript SDK. Я могу проверить основной статус входа, войти в Facebook, получить свое имя и выйти из системы.

сегодня, без каких-либо изменений с моей стороны, он сломан в Chrome с ошибкой JavaScript, которая очень распространена в результатах поиска Google, но никаких реальных ответов. Он по-прежнему отлично работает в IE и Firefox.

вот открытый URL:

http://www.andrewdothay.net/prj/facebook/

когда вы открываете консоль JavaScript в Chrome, он выбрасывает тонны этих ошибок:


небезопасная попытка JavaScript получить доступ к кадру с URL из кадра с URL http://www.andrewdothay.net/prj/facebook/.

Домены, протоколы и порты должны совпадать.


есть идеи о том, что происходит с Chrome здесь?


обновление

Я обнаружил, что Chrome на сегодняшней машине блокирует всплывающее окно входа, когда я звонил FB.login (), но я знаю, что вчера не получал эти 190 сообщений об ошибках в консоли JavaScript.

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

8 60

8 ответов:

Я нашел решение. При выполнении ФБ.вход без действий пользователя, webkit блокирует всплывающие окна.

например, я использовал систему приглашений в своем проекте. Был ввод / текст для ввода кода приглашения. Я проверил, что код приглашения доступен с запросом ajax/post. если он доступен, я запускаю FB.вход.)( Как вы догадываетесь, браузер заблокировал всплывающее окно и тонны ошибок появились на консоли js.

поэтому вы должны запустить FB.войти () после действия пользователя. Я поставлю facebook кнопка входа между ajax / post и FB.вход.)( Пользователи должны будут щелкнуть по нему-это отстой, но они не увидят проблемы.

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

в моем случае это было из-за facebook JS загружается несколько раз на одной странице: один для входа в систему и второй для кнопки "Нравится". Удаление ссылки в модуле "like" экономит время.

в моем случае проблема была связана с <div id="fb-root"></div> тег. Я не ставил его сразу после открытия <body> тег в соответствии с рекомендациями docs.

после размещения его в нужном месте, " небезопасный JavaScript...- ошибка остановлена.

удаление опции' xfbml : true ' из моего FB.инициализации вызовов фиксированная это для меня.

У меня была проблема в интернет-браузере по умолчанию на Android Jelly Bean

Mücahit Yılmaz правильно. Возьмите пример, который я вставил ниже, и если вы используете метод setTimeout (), он терпит неудачу, иначе он работает. Я все еще получаю предупреждающее сообщение в цикле, пока я правильно не войду, но это небольшая цена. Я уверен, что пользователи не увидят его.

$(document).ready(function() {
$("#facebook_link").click(function() {
    //setTimeout(fb);
    fb();
    return false;
});

function fb() {
    FB.getLoginStatus(function(response) {
        if (response.session) {
            // logged in and connected user, someone you know
            gotResponse(response);
        } else {
            // no user session available, someone you dont know
            FB.login(function(response) {
                if (response.session) {
                    // user successfully logged in
                    gotResponse(response);
                } else {
                    // user cancelled login, do nothing
                }
            });
        }
    });
}

function gotResponse(response) {
    console.dir(response);
}

});

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

У меня была эта проблема с браузером chrome, и это было связано с моими настройками chrome. У меня был браузер, настроенный на то, чтобы запретить сторонним сайтам устанавливать данные cookie. Разрешение всплывающих окон не было проблемой для меня. Когда создается iFrame facebook, он должен установить файл cookie, который затем используется для отслеживания, если пользователю необходимо войти в систему. Если этот файл cookie не может быть установлен, то сайт не работает. Одна вещь, которая была бы полезна в api facebook, - это настройка, которая показывает, когда что-то не работает. Я не рассматривайте это как событие, на которое можно подписаться и назначить обратный вызов.

вот ссылка на FB javascript sdk по подпискам. Любой ответ на поиск обратного вызова для неудачных запросов будет appreciated.
https://developers.facebook.com/docs/reference/javascript/FB.Event.subscribe/

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

<div class="fb-like-box" data-href="https://www.facebook.com/xxxxxx"

to:

<div class="fb-like-box" data-href="http://www.facebook.com/xxxxxx"

поскольку мой веб-магазин не использовал https, я удалил' s ' из атрибута data-href likebox.

решение Mücahit Yılmaz работало и для меня. Мне не нужно было обращаться к информации пользователя, поэтому я удалил сценарий входа из примера приложения. Также удалено приветственное сообщение и любая информация, требующая информации, хранящейся в $basic переменной.