Как динамически изменить таблицу стилей HTML-страницы в iFrame другой страницы? - PullRequest
0 голосов
/ 13 января 2012

У меня есть веб-страница, использующая темы пользовательского интерфейса jQuery.На этой странице есть iFrame, содержащий другой HTML-документ, который также использует темы пользовательского интерфейса jQuery.Теперь я сделал свой собственный селектор тем, и я хотел бы знать, как проще всего сделать так, чтобы он влиял на страницу в iFrame.Например, всякий раз, когда пользователь выбирает новую тему, я просто делаю что-то вроде:

<link id="uiTheme" rel="stylesheet" type="text/css" href="ui/smoothness.css" />
$("#uiTheme").attr("href", "ui/" + newTheme + ".css");

Где newTheme - строковый литерал другого их (все сделано через поле выбора, и я знаю этовсе работает и такое).Теперь, как я могу изменить лист, используемый внутри фрейма, чтобы он соответствовал листу главной страницы?Наверное, мой вопрос: как я могу использовать селектор jQuery, чтобы получить ссылку с идентификатором innerTheme, чтобы изменить ее атрибут href на ту же таблицу стилей?Кроме того, мне даже нужно беспокоиться об этом, или же пользовательская тема внешней страницы автоматически сойдет в рамку без ссылки самой страницы рамки на таблицу стилей?

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

Ответы [ 2 ]

1 голос
/ 13 января 2012

Вам не нужно получать ссылку на их элемент ссылки - просто добавьте свой собственный, и он переопределит.

var link = document.createElement('link');
link.href = "http://full.domain.com/ui/smoothness.css";
link.type = 'text/css';
link.rel = 'stylesheet';
$('head', frameName )[0].appendChild(link);

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

0 голосов
/ 13 января 2012

Вот код, который, я надеюсь, может немного помочь: Он перебирает таблицы стилей iframe, включая / выключая их

javascript: var i=0;
for(var j=0;j < window.frames.length;j++){
  cs=!window.frames[j].document.styleSheets[0].disabled;
  for(i=0;i<window.frames[j].document.styleSheets.length;i++) 
    window.frames[j].document.styleSheets[i].disabled=cs;
};
void(cs=true);

Код основан на Bookmarklet для включения / выключения CSS здесь

...