Использование «окна» и «документа» в iFrame - PullRequest
1 голос
/ 30 июля 2010

Я занимаюсь разработкой приложения iFrame для Facebook. У iFrame есть свф. Нам нужно получить доступ к этому SWF через JavaScript.

У этого iFrame есть swf, который нужно поместить в переменную Javascript, чтобы мы могли вызывать функции ExternalInterface из.

Прямо сейчас наша переменная "flash" не определена, потому что мы не можем получить доступ к элементам этого iFrame, поскольку это вызывает предупреждение безопасности песочницы, так как вызов окна или документа таким образом означает, что мы получаем доступ к этому контенту из сайт родителей, который является Facebook.

Прямо сейчас мы делаем что-то вроде:

if(navigator.appName.indexOf("Microsoft") != -1)
{
     flash =  window["swfr"];
 }
 else
 {
    flash = document["swfr"];
  }

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

Ответы [ 4 ]

0 голосов
/ 30 июля 2010

Должно работать, если скрипт находится внутри IFrame, так как IFrame будет иметь тот же домен, что и SWF-файл. Однако, если iframe обслуживается с какого-то URL-адреса Facebook, вам придется создать / обновить файл cross-domain.xml на хосте, который обслуживает SWF.

Кроме того, попробуйте swfObject, поскольку он имеет гораздо более широкую совместимость с браузером и даже используется Flash Builder 4 в автоматически сгенерированном HTML-шаблоне.

http://code.google.com/p/swfobject/

0 голосов
/ 30 июля 2010

Дочерняя страница iframe имеет ссылку на родителя, а не наоборот. Таким образом, вы должны иметь возможность дать обратную ссылку, а затем использовать ее для манипулирования вашим flash-объектом. В этом блоге показано, как вызвать родительскую функцию (в качестве ссылки вы передаете объект Flash): http://www.velocityreviews.com/forums/t164727-a-challenge-call-parent-javascript-function-from-inside-an-iframe.html

родительская страница:

function ManipulateFlashObj(obj)
{
alert(obj);
}

child (страница iframe):

parent.ManipulateFlashObj(document.getElementById("swf"));
0 голосов
/ 30 июля 2010

Если родительская страница и страница iframe находятся в разных доменах DNS, браузер не позволит родительскому элементу видеть дочерний контекст, а дочернему - родительский контекст. Чтобы перемещать данные между родителем и дочерним элементом, вам необходимо использовать методы междоменных сценариев (XSS), такие как передача данных по URL-адресу iframe.

0 голосов
/ 30 июля 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...