문제

스타일시트를 호출할 수 있는 방법이 있나요? 오직 사용할 수 없는 경우 다른 위치에서 스타일시트를 호출하시겠습니까?

이 같은:

<link rel="Stylesheet" type="text/css" href="http://cdn.somewhere.com/css/style.css" />
<link rel="Stylesheet" type="text/css" href="local/style.css" />

하지만 오직 첫 번째 전화를 사용할 수 없으면 두 번째 전화를 걸까요?불필요하다면 2번의 전화를 걸고 싶지 않습니다.감사합니다.

편집하다:이는 직장에서 CDN이 차단되어 스타일이 표시되지 않지만 사이트는 표시된다는 것을 알았기 때문입니다.나는 많은 장소가 동일한 블록(웹 애플리케이션을 차단하는 방화벽)을 가질 수 있다고 가정합니다.그래서 로컬 복사본에서 CSS를 가져오고 싶습니다.

도움이 되었습니까?

해결책

순수한 HTML 마크 업에서는 불가능합니다. 그러나 당신은 이것을 할 수 있습니다 서버 측 간단한 스크립트 (예 : Pseudocode) :

if first style does not exist:
    output <link> to second sheet
else
    output <link> to primary sheet

그러나 실제로, 스타일 시트는 브라우저에 의해 캐시 될 가능성이 높으므로 최종 사용자에게 부담이 거의 없습니다. '두 번째'스타일 시트가 먼저로드되고 기본 시트가 두 번째로드되도록 S를 주문할 수 있습니다. 이로 인해 기본 시트가 보조 시트의 모든 것을 무시하게됩니다. 그러나 기본 시트를 사용할 수없는 경우 보조 시트는 여전히 의도 한대로 작동합니다.

다른 팁

JavaScript/AJAX는 강력합니다. 권장하지 않음 매우 예측할 수 없는 동작으로 인해(브라우저 간 호환성에 대해 말하는 것이 아니지만 일부 사용자는 이를 꺼 놓았습니다.)

내가 당신이라면 처음으로 주어진 CSS의 존재를 확인하겠습니다. 서버 측 그에 따라 href를 삽입하십시오.

또한 확실히 하기 위해 이런 종류의 메커니즘을 꼭 사용해야 한다면 서버가 안정적이지 않다는 뜻이라는 점을 명심하세요.

링크 요소 자체가 정적이기 때문에 ( "멍청한"). 따라서 JavaScript, Greasemonkey (Firefox에서는 JavaScript도)가 필요하거나 실제로 두 가지를 모두 요청해야합니다.

그러나 주문은 달라야합니다. IIRC : 동일한 CSS 규칙이 이전의 규칙을 덮어 씁니다. 따라서 먼저 로컬 파일을 포함시킨 다음 외부 파일을로드해야합니다. 외부를 사용할 수없는 경우 로컬 사본이 사용됩니다.

CSS 파일을 로컬 하드 디스크에 넣으면 이것은 꽤 저렴합니다.

즉, 브라우저가 항상 파일을 다운로드하지는 않습니다. 먼저 캐시의 사본이 여전히 최신인지 확인하고 파일을 다시 다운로드하지 않습니다.

기본적으로 'local.css'를 사용하고 JavaScript (Ajax 사용)를 사용하여 새 것을로드 할 수 있습니다. 요청이 새 CSS 파일을로드 할 수 있다면 괜찮을 것입니다. 그렇지 않으면 변경 사항 만 변경합니다.

ehmm ... 당신은 이것을 사용합니다.

대체 스타일 시트가 첫 번째가 실패 할 때로드되는지 모르겠지만 확실하지 않더라도 이것을 읽을 수 있습니다. 스타일 시트를 변경하기위한 목록이라는 목록

이것은 JavaScript에 의해 달성 될 수 있습니다. 코드는 다음과 같아야합니다.

if( loadcss(first.css) == false) loadcss(second.css);

CSS가로드되었는지 여부를 확인하는 경우로드 CSS가 함수를 확인합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top