API Facebook не работает в Opera - PullRequest
0 голосов
/ 12 марта 2012

API Facebook не работает в Opera: FB.Canvas.setSize - не изменять размер холста.FB.Canvas.getPageInfo - не вызывает функцию обратного вызова.

Воспроизвести: Откройте http://apps.facebook.com/operafbbug/ в Opera и, для сравнения, в Chrome (или Firefox, IE)

ОжидаетсяПоведение:
Высота холста изменится на 1100, за исключением Opera. Когда вызывается функция FB.Canvas.getPageInfo и возвращает данные, на этой странице будет отображаться предупреждение «Информация».Вы снова увидите это предупреждение во всех браузерах, кроме Opera.

Ошибка в трекере ошибок Facebook: http://developers.facebook.com/bugs/188820761219553

1 Ответ

1 голос
/ 13 марта 2012

Цитирую себя из системы отслеживания ошибок FB: Opera запускает событие асинхронной загрузки для about: blank, что приводит к преждевременному удалению IFRAME canvas_proxy. Opera начинает сталкиваться с этим из-за сокрытия document.attachEvent, чтобы избежать другой связанной проблемы, вызванной веткой IE скрипта (https://github.com/operasoftware/browserjs/issues/1).

Что касается обходных путей, делаю

document.attachEvent=function(){}

до встраивания скрипта Facebook должно работать как обходной путь, но очень уродливо и, вероятно, не будет продолжать работать в будущем. Это должно быть исправлено в Facebook (игнорируя проблематичное событие загрузки и не удаляя IFRAME, пока он не узнает реальный целевой контент, загруженный) или в Opera (выясняя, из-за какого состояния гонки или времени попадания Opera делает неожиданное событие загрузки, хотя IFRAME переходит на другой URL).

Opera, вероятно, также должна добавить временный обходной путь в browser.js. Вероятно, вам следует полностью игнорировать эту проблему и отложить тестирование с Opera, пока Opera и / или Facebook не решат ее.

...