Вам нужен JavaScript. Это то же самое, что и на родительской странице, за исключением того, что перед командой JavaScript необходимо указать имя iframe.
Помните, что применяется та же политика происхождения, что вы можете сделать это только с элементом iframe, который поступает с вашего собственного сервера.
Я использую инфраструктуру Prototype, чтобы сделать это проще:
Это верно. На содержание Iframe распространяется политика того же домена. Если это из вашего домена, вы можете контролировать его, если нет, вы заблокированы. Это предотвращает все виды взлома страниц на основе Iframe.
Диодей - Джеймс Макфарлейн
2
Не совсем "CSS only" решение, но достаточно хорошее для меня. +1
Нику Сурду
2
Это не CSS.
Страмин
103
Короче нет.
Вы не можете применить CSS к HTML, который загружен в iframe, если у вас нет контроля над страницей, загруженной в iframe из-за ограничений междоменного ресурса.
Это правда, но на самом деле не помогает людям привести пример того, как это сделать
Саймон Драгсбек
это только придумать в 2018 году? Я помню, что я использовал для настройки стиля iframe приходят извне. Я пытался применить CSS к iframe, который отрисован с помощью скрипта, но он все еще не работает.
не работает: Uncaught DOMException: не удалось прочитать свойство 'contentDocument' из 'HTMLIFrameElement': заблокирован фрейм с источником " HOST " от доступа к фрейму перекрестного происхождения.
бубен
@tubbo, в вашем случае вы не можете вставлять неавторизованные сайты, запрещенные XSS. Это только для тех, кто ищет свои проблемы, а не для хакеров: p
Рияз Хамид
10
Быстрый ответ: нет, извините.
Это невозможно, используя только CSS. В основном вам нужно контролировать содержимое iframe, чтобы его стилизовать. Существуют методы, использующие javascript или предпочитаемый вами веб-язык (о котором я немного читал, но не знаком с самим собой) для динамической вставки некоторых необходимых стилей, но вам потребуется прямой контроль над содержимым iframe, которое звучит как у тебя нету.
Используйте Jquery и дождитесь загрузки источника. Вот как я этого добился (использовал угловой интервал, вы можете использовать javascript метод setInterval):
почему вы не используете iframe загруженное событие?
ProllyGeek
3
вероятно, не так, как вы думаете. iframe тоже должен быть <link>в файле css. И вы не можете сделать это даже с JavaScript, если он находится в другом домене.
Вы не можете использовать это больше из-за той же политики происхождения в браузере Chrome. Сообщение об ошибке:Uncaught DOMException: Failed to read the 'contentDocument' property from 'HTMLIFrameElement': Blocked a frame with origin **** from accessing a cross-origin frame.
Мохаммед АльБанна
@adamj, мы можем изменить таблицу стилей перезаписи элемента iframe? Если да, пожалуйста, добавьте скрипт.
Супер модель
2
Как сказал Юджин, что-то вроде хакерского поведения. Я закончил тем, что следовал его коду и связывался с моим собственным Css для страницы. Проблема для меня заключалась в том, что, используя временную шкалу твиттера, вы должны обходить щебет, чтобы переопределить их код smidgen. Теперь у нас есть скользящая временная шкала с нашим css, шрифтом IE Larger, правильной высотой строки и скрытой полосой прокрутки для высоты, превышающей их пределы.
var c = document.createElement('link');
setTimeout(frames[0].document.body.appendChild(c),500);// Mileage varies by connection. Bump 500 a bit higher if necessary
Не уверен, что это правильный ответ на данный вопрос, но это было отличное решение, чтобы изменить размер формы Google в соответствии с шириной устройства, большое спасибо!
shiftyscales
0
Да, это возможно, хотя и громоздко. Вам нужно будет напечатать / отобразить HTML-код страницы в теле вашей страницы, а затем применить функцию изменения правила CSS. Используя те же примеры, что и выше, вы, по сути, будете использовать метод синтаксического анализа, чтобы найти элементы div на странице, а затем применить к нему CSS-код, а затем перепечатать или повторить его для конечного пользователя. Мне это не нужно, поэтому я не хочу кодировать эту функцию в каждом элементе CSS другой веб-страницы просто для того, чтобы сделать это.
Невозможно со стороны клиента. Будет выдано сообщение об ошибке «Ошибка: в доступе к свойству« документ »отказано в доступе», поскольку Iframe не является частью вашего домена. Единственное решение - извлечь страницу из кода на стороне сервера и изменить необходимый CSS.
Этот ответ верен по своему содержанию, но относится к JavaScript, тогда как вопрос относится к CSS. Ответ может заключаться в том, что вам нужно использовать JavaScript, но вы этого не говорите. Ответ также предполагает, что контент в iFrame принадлежит другому домену, что не всегда так. Наконец, точное сообщение будет варьироваться от браузера к браузеру.
Ответы:
Вам нужен JavaScript. Это то же самое, что и на родительской странице, за исключением того, что перед командой JavaScript необходимо указать имя iframe.
Помните, что применяется та же политика происхождения, что вы можете сделать это только с элементом iframe, который поступает с вашего собственного сервера.
Я использую инфраструктуру Prototype, чтобы сделать это проще:
или
источник
Короче нет.
Вы не можете применить CSS к HTML, который загружен в iframe, если у вас нет контроля над страницей, загруженной в iframe из-за ограничений междоменного ресурса.
источник
Да. Посмотрите на этот другой поток для деталей: Как применить CSS к iframe?
источник
frame1
это имя iframe, а не IDВы можете извлечь содержимое
iframe
первого, а затем использоватьjQuery
селекторы против них, как обычно.Удачи!
источник
Быстрый ответ: нет, извините.
Это невозможно, используя только CSS. В основном вам нужно контролировать содержимое iframe, чтобы его стилизовать. Существуют методы, использующие javascript или предпочитаемый вами веб-язык (о котором я немного читал, но не знаком с самим собой) для динамической вставки некоторых необходимых стилей, но вам потребуется прямой контроль над содержимым iframe, которое звучит как у тебя нету.
источник
Используйте Jquery и дождитесь загрузки источника. Вот как я этого добился (использовал угловой интервал, вы можете использовать javascript метод setInterval):
источник
вероятно, не так, как вы думаете. iframe тоже должен быть
<link>
в файле css. И вы не можете сделать это даже с JavaScript, если он находится в другом домене.источник
<iframe src="/source" link=css-stylesheet:"/css.css">
?По-видимому, это можно сделать через jQuery:
https://stackoverflow.com/a/13959836/1625795
источник
Uncaught DOMException: Failed to read the 'contentDocument' property from 'HTMLIFrameElement': Blocked a frame with origin **** from accessing a cross-origin frame.
Как сказал Юджин, что-то вроде хакерского поведения. Я закончил тем, что следовал его коду и связывался с моим собственным Css для страницы. Проблема для меня заключалась в том, что, используя временную шкалу твиттера, вы должны обходить щебет, чтобы переопределить их код smidgen. Теперь у нас есть скользящая временная шкала с нашим css, шрифтом IE Larger, правильной высотой строки и скрытой полосой прокрутки для высоты, превышающей их пределы.
источник
Просто добавьте это, и все работает хорошо:
источник
Да, это возможно, хотя и громоздко. Вам нужно будет напечатать / отобразить HTML-код страницы в теле вашей страницы, а затем применить функцию изменения правила CSS. Используя те же примеры, что и выше, вы, по сути, будете использовать метод синтаксического анализа, чтобы найти элементы div на странице, а затем применить к нему CSS-код, а затем перепечатать или повторить его для конечного пользователя. Мне это не нужно, поэтому я не хочу кодировать эту функцию в каждом элементе CSS другой веб-страницы просто для того, чтобы сделать это.
Ссылки:
источник
Комбинируя различные решения, это то, что сработало для меня.
источник
Невозможно со стороны клиента. Будет выдано сообщение об ошибке «Ошибка: в доступе к свойству« документ »отказано в доступе», поскольку Iframe не является частью вашего домена. Единственное решение - извлечь страницу из кода на стороне сервера и изменить необходимый CSS.
источник