2010-06-18 2 views
0

브라우저가 IE 인 경우에만 이미지 확장명 (.svg에서 .png)을 동적으로 변경하기위한 최상의 솔루션을 찾고 있습니다.브라우저가 IE 인 경우 파일 확장명을 변경하십시오.

내가 뭘 가장 좋은 방법 알고하지 않습니다.

  • $ ("img.svg2png")처럼 뭔가 PHP

  • 사용 jQuery를 사용하여 HTML 코드를 구문 분석을 ATTR ("src", ...);

  • 다른 솔루션 htaccess로하고 재 작성 규칙을 다루는?

감사합니다. ,

+0

URL을 출력하는 방법과 위치에 따라 다릅니 까? –

+0

이론적으로 콘텐츠 협상 (MultiViews)을 사용할 수 있지만 적어도 Opera는 accept 헤더의 svn 파일에 PNG를 선호한다고 주장합니다. – Artefacto

+0

실제로 SVG를 지원하기 때문에 IE9에서는 사용하지 마십시오. –

답변

3

당신은 당신이 무슨 일을하는지에 대한 많은 세부 사항을 공개하지 않는,하지만 mod_rewrite를 솔루션합니다 (USER_AGENT 변수를 잡기가 IE인지 여부를 확인하고, 일치하는 .png 파일에 내부 리디렉션) 나에게 가장 우아한 소리 그것은 JavaScript가 작동하지 않기 때문에 파일 확장명을 유지할 수 있습니다. 오른쪽 Content-Type 헤더가 전송되는 한 .svg 확장자는 의미가 없어야합니다.

+0

@Pekka은 내가, 감사 솔루션에 대한 시도를주지 내 변환해야합니다! –

+0

@ 카아 비아 여러분을 환영합니다. mod_rewrite를 사용하면 URL을 변환 할 필요가 없습니다. 그것은 항상'img1.svg'이지만 IE의 경우 PNG가 그 이름으로 제공 될 것입니다. –

+0

죄송합니다, 이것은 매우 전문적으로 들리 지 않습니다. 콘텐츠 협상을 사용할 수있는 경우 사용자 에이전트 스니핑에 의존하는 이유는 무엇입니까? 그것은 적어도 위키 ​​피 디아가하는 것입니다. – mario

0

당신이 할 수 있습니다 :

var imageArray = $('img.svg2png').attr('src').split('.'); 
var newImage = imageArray[0]+'.png'; 

$("img.svg2png").attr("src", newImage); 

이가 만 (확장자 기간 인 것을)

이 아래로 휴식하는 파일의 전체 SRC의 1주기를 가지고 있다고 가정 떨어져 있음을 알아 두셔야 , .split ('.')은 마침표가 구분 기호 인 문자열 배열을 만듭니다. 그래서

imageArray[0] = 'imagesDir/imageName' 

imageArray[1] = 'svg' 

그래서 당신이 이미지의 첫 번째 부분과 새로운 확장자를 가진 SRC를 재구성한다하고 있습니다.

희망이 도움이됩니다.

관련 문제