2011-12-01 3 views
1

여기에서 문제가 발생했습니다. 나는 CSS 테마를 지원하는 시스템을 개발 중이다. 지금까지는 괜찮아요, 테마는 원하는대로 바꿀 수 있지만 시스템은 두 부분으로 구성되어 있습니다 :Reload iFrame CSS

첫 번째는 시스템의 "골격"이며 테마를 변경할 수있는 메뉴와 옵션이 포함되어 있습니다. 이 메뉴는 메뉴 클릭에 의해 호출되는 모듈을로드하는 iFrame에 의해 기본적으로 구성된 두 번째 부분의 내용을로드합니다. 메뉴 클릭시 링크를 읽어

$("link").attr("href", "css/temas/"+theme_name+".css"); 

THEME_NAME가 수집 :

는 다음 코드를 사용하여 시스템의 첫 번째 부분의 테마를 변경할 수 있습니다. 시스템은 여기에서 괜찮습니다. 그리고 아무런 변화가 필요 없습니다. 메인 테마를 변경하는 것 외에도 추가 시스템 주제를 읽는 데 사용되는 쿠키를 기록합니다.

그래서 시스템의 두 번째 부분도 테마를 적용하기 위해 해당 쿠키를 읽지 만 기본 부분처럼 즉시 변경되지 않습니다!

예를 들어, 테마 아이콘을 클릭하면 화면을 새로 고치지 않고 즉시 테마가 적용되지만 두 번째 부분은 그렇지 않습니다. 테마를 적용하지만, iFrame을 다시로드하고 다시로드하는 경우에만 표시됩니다. 멋진 것은 아닙니다!

나는 다음 코드로 iframe이 테마를 변경하려고 해요 :

#ifr_main는 iframe이 이름
$("#ifr_main link").attr("href", theme_name); 

!

아무도 내가 어떻게 알아낼 수 있고 메뉴에서하는 것처럼 페이지를 새로 고치지 않고 새 CSS를 적용 할 수 있습니까?

미리 감사드립니다. =)

답변

3

링크 요소를 선택하기 전에 먼저 iFrame의 콘텐츠를 선택해야합니다.

$("#ifr_main").contents().find("link").attr("href", theme_name); 

사이드 노트 Iframe을 못생긴 수 있습니다 :)

+0

iframe은 * 못 생겨 * 사용하는 방법이 전부입니다. 스크롤 막대는 못생긴 것입니다. –

+0

위아래 친구! .find()를 사용하여 비슷한 것을 시도했지만 실패했습니다! 하하! 솔루션이 완벽하게 작동했습니다! iFrame에 대해 @Madmartigan과 똑같이 생각합니다! –

+0

하하하 좋은 시도 @ jValdron! : P –

0

이 페이지가로드 될 때, 당신은 당신이 JQuery와/아약스 방법을 사용하지 않는 찾고 변경할 수 없습니다 그 후, 그래서 iframe이 콘텐츠를로드 되었기 때문이다 또는 다시로드하십시오.
요 아마 당신이 아약스를 통해 ifreame를 다시로드 할 수 있습니다 그것은
here, herehere

에 대한 몇 가지 질문을 찾을 수 있습니다, 마지막으로 당신이 더 많은 독특한 방법에 대한 this video을주의해야
here를 참조하십시오.

+0

사실 나는 이것을 메인 부분에서하고 있기 때문에 할 수있다. 주요 부분을 위해 코드를 잘라내고 두 번째 부분을 위해 @jValdron 스 니펫을 찾습니다! =] –