Изменение атрибутов IFrame из источника IFrame. Является ли это возможным? - PullRequest
2 голосов
/ 19 января 2009

На моем компьютере я использую специальный рекламный блок, основанный на перенаправлении HOSTS (поэтому у меня может быть рекламный блок в Chrome). Я использую IIS на своем компьютере, поэтому у меня появляется пользовательская пустая ошибка 404, которая отображается, когда на странице отображается объявление на основе iframe.

Я изменил ошибку 404, чтобы унаследовать ее фоновый цвет от родительского, чтобы объявление не выглядело неприятно на сайтах с не белым фоном. Моя следующая задача - использовать страницу 404, чтобы полностью свернуть iframe, чтобы он вообще не отображался на странице.

Можно ли изменить содержащий тег <iframe /> изнутри фрейма? Я просто хочу изменить атрибуты высоты и ширины, если это возможно. Если так, как бы я поступил так?

Ответы [ 3 ]

3 голосов
/ 19 января 2009

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

Вам лучше использовать прокси-сервер для блокировки рекламы.

0 голосов
/ 19 января 2009

Страница, которая заполняет iframe, не может ничего изменить в отношении страницы, содержащей iframe. Если бы это было возможно, то это было бы огромным риском для безопасности. Конечно, я попробовал только то, что вы спрашиваете, используя два домена, которые мне дали в школе. Проще говоря, это не сработало; Я получил сообщение об отказе в разрешении в Firebug.

0 голосов
/ 19 января 2009

Если я правильно вас понимаю, вы говорите, что хотите, чтобы ваша страница 404 вызывала крах iframe, когда он загружается внутри него. Самый простой способ сделать это - создать функцию на родительской странице, а затем вызвать ее из 404 при загрузке.

Например, если ваш iframe имеет идентификатор "advertFrame", вы можете добавить следующую функцию javascript на родительскую страницу:

function hideAdvertFrame() {
  var advertFrame = document.getElementById("advertFrame");
  advertFrame.style.height = 0;
  advertFrame.style.width = 0;
}

Затем на странице 404 вы можете вызвать функцию сразу же после ее загрузки:

<body onload="window.parent.hideAdvertFrame();">

Тем не менее, я думаю, что вы все еще можете рассмотреть другие варианты, помимо межкадрового сценария, которые менее подвержены дырам в безопасности. Возможно, ваша родительская страница может использовать AJAX, чтобы проверить, будет ли у рекламного блока допустимый URL-адрес перед загрузкой, а затем динамически добавить его на страницу, как только определится.

...