проблемы с iframe js - PullRequest
       3

проблемы с iframe js

0 голосов
/ 29 февраля 2012

Я новичок в веб-разработке и JS. Я понимаю некоторые js и jQuery, но пока недостаточно для написания полезного кода, поэтому я надеюсь получить здесь помощь. Я включаю некоторые сторонние веб-приложения в свой веб-сайт через iFrame (из всплывающих окон и прямых ссылок, это лучший способ) и задаю вопрос из двух частей.

1) Веб-приложения не допускают прямого кодирования и допускают только ограниченное количество параметров стилей CSS. Я могу загрузить фоновое изображение и изменить цвет фона, но не могу сделать его прозрачным. Я хочу настроить фрейм так, чтобы фон моего сайта просвечивал. Согласно Firebug, я могу просто полностью убрать опцию цвета фона, и проблема решена.

Проблема заключается в том, что эти приложения находятся в другом домене, вызывая междоменные проблемы, и я полагаю, что большая часть кода на стороне сервера использует Dynamic View Controller (через мою голову), поэтому включение кода в мой сайт, вероятно, будет не работа. Мой «IT Guy» говорит, что мы должны быть в состоянии нацелить iframe в моем .php-файле и изменить стиль после загрузки iframe, поскольку каскад стилей. Тем не менее, iframe, как и все остальное на странице, не назван (без классов и идентификаторов), поэтому для его нацеливания я должен использовать какой-то вид ("this"). Child.child ("body" ") Такие вещи. Ничто из того, что мы пробовали, до сих пор не сработало. Если я могу настроить таргетинг на iframe, я могу изменить другие незначительные проблемы, такие как кнопки, которые отображаются неправильно.

2) Если я установил высоту iframe, и iframe отображает вещи, которые длиннее высоты, он обрезается (очевидно). Мне нужно, чтобы iframe имела динамическую высоту, поэтому, если содержимое iframe изменяется, высота iframe также изменяется. Я видел фрагменты кода, чтобы сделать это, но я понятия не имел, что я делал, и удивительно, что это не сработало. Я надеюсь немного узнать магию JS, если это сработает.

Тестовая страница расположена по адресу http://www.nightaliveent.com/builds/1.0/music.php. Я могу предоставить свой текущий код, если это поможет, но я не хочу загрязнять доску. Для справки, веб-приложения - это инструменты DJ Intelligence, в частности (http://www.djintelligence.com/music).

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

Ответы [ 3 ]

0 голосов
/ 29 февраля 2012

Кайл, вы абсолютно правы в том, что вы не можете получить доступ к содержимому iframe, если домен родителя и потомка различен, в вашем случае это верно.Родительский URL-адрес "http://www.nightaliveent.com", а дочерний домен (сторонние веб-приложения)" http://www.nightaliveent.djintelligence.com/music"

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

$("iframe").contents()

Небезопасная попытка JavaScript получить доступ к фрейму с URL http://www.nightaliveent.djintelligence.com/music/ из фрейма с URL http://www.nightaliveent.com/builds/1.0/music.php. Домены, протоколы и порты должны совпадать.

0 голосов
/ 29 февраля 2012

Вы можете «получить доступ» к контенту в iframe только в том случае, если он используется в том же домене (безопасность), и попытка доступа к нему из другого домена никогда не будет работать.Также лучше не использовать iframe (не рекомендуется), используйте вместо него объект.Для некоторых версий IE вам нужен iframe, потому что IE не совместим с W3C (оффтоп: по моему мнению, IE - это кусок дерьма).

Что вы можете сделать, если хотите загружать ЧАСТИ контента с другого сайта, этоиспользуйте ajax и после получения страницы отфильтруйте нужный контент.Обратитесь к функции jQuery.ajax, и вы сможете определить обратные вызовы об ошибках и успешности.Например:

$.ajax({
   async:true,
   cache:true,
   url: 'your url',
   success:function(s) { alert('the string is: '+s); <filter contents and set target> },
   error:function() { alert('failed'); }
});

Надеется, что это поможет.

0 голосов
/ 29 февраля 2012

«Мой« IT Guy »говорит, что мы должны иметь возможность нацелить iframe в моем .php-файле и изменить стиль после загрузки iframe, поскольку каскад стилей.»

В этом много неправильного.

  • как только iframe загружен, он уже на стороне клиента в браузере. PHP не имеет права голоса
  • каскад стилей в текущем DOM. Ваш iFrame - это «дыра» в совершенно другом DOM. У вас нет возможности стилизовать контент в iFrame из другого домена.

«Мне нужно, чтобы iframe имела динамическую высоту, поэтому, если изменяется содержимое iframe, изменяется и высота iframe»

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

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

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