Ошибка в IE с общим доступом Facebook - и не закрывает окно - PullRequest
0 голосов
/ 16 сентября 2011

Я использую немного измененный пример кода из Facebook для публикации в фиде пользователя:

<a class="facebook popup" 
href="" 
title="Post to Facebook"
onclick="FB.ui(
    {
        method: 'feed',
        name: 'Feedback from Customer in x',
        link: 'http://localhost/User/Feedback.aspx',
        picture: 'http://localhost/Images/Picture.jpg',
        caption: 'Caption goes here.',
        description: 'Description goes here.'
    }
);
return false;">
<img alt="Post to Facebook" src="../Images/feedback-fb.png"/>

Но я вижу пару проблем в IE (9).

  1. Ошибка сценария: SCRIPT70: Permission denied all.js?_=1316190103502, line 22 character 4250.
  2. Когда пользователь нажимает кнопку отмены или публикации, диалоговое окно не закрывается.

Если оно вызываетРазница в том, что большинство браузеров используют тип отображения «диалог», где IE в этом случае использует «всплывающее окно» по какой-то причине.Если я заставлю его использовать display: 'popup', то (по крайней мере) Chrome будет работать нормально.Любая помощь будет оценена!

Ответы [ 2 ]

1 голос
/ 19 октября 2011

У меня было две проблемы.Сначала была ошибка IE в FB, которая имеет обходной путь (который описан здесь).Ошибка: 20168 .Обходной путь:

FB.UIServer.setLoadedNode = function (a, b) { FB.UIServer._loadedNodes[a.id] = b; }; // IE hack to correct FB bug 20168

Найден по этот вопрос здесь, на SO.

Но у меня также были проблемы с моим доменом приложения FB - мне пришлось настроить приложение FB науказать на определенный поддомен, который я использовал (x.domainname.com), в противном случае в IE, когда я позвонил FB.login, я получил ошибку отказа в разрешении и другой пустой экран.

1 голос
/ 20 сентября 2011

Для этой конкретной проблемы мне удалось устранить ошибку в IE9, настроив мой сервер для возврата заголовка (это в синтаксисе nginx):

  add_header P3P 'CP="HONK"';

Вы можете сделать то же самое длядругие серверы, такие как apache и т. д., или, альтернативно, возвращают его из серверного скрипта.Я этого не делал, но я полагаю, что синтаксис в php:

header('P3P: CP=HONK');

Это явная прокладка, так как " правильно " реализует P3P намного большеОднако мы просто хотели посмотреть, какие минимальные усилия потребовались для устранения этой ошибки, и вышесказанное сработало.

...