///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
출처: http://msdn.microsoft.com/ko-kr/library/ie/dn423948(v=vs.85).aspx
브라우저 간 플러그 인 검색
IE11부터 navigator 개체는 plugins 및 mimeTypes 속성을 지원합니다. 또한window.ActiveXObject 속성은 DOM에서 숨겨집니다. 즉, 더 이상 속성을 사용하여 IE11을 검색할 수 없습니다.
이제 플러그 인 검색 코드가 브라우저 간에 일치하며, Internet Explorer에 대해 특수 코드를 제공할 필요가 없습니다. 일관된 기술을 사용하도록 일부 웹 페이지를 업데이트해야 할 수 있으며, 새 속성에 적합한 정보를 사용할 수 있도록 일부 플러그 인이 해당 설치 루틴을 업데이트해야 할 수도 있습니다. 여기서 이 작업을 수행하는 방법을 알아봅니다.
효과적으로 플러그 인 검색
이러한 변경 내용은 다음 두 가지 방식 중 하나로 기존 사이트에서 플러그 인을 검색하는 방법에 영향을 줄 수 있습니다.
플러그 인이 설치된 경우에도 검색되지 않을 수 있습니다.
사이트에서 window.ActiveXObject 속성을 사용하여 플러그 인이 있는지 확인하는 경우 대신 새 속성을 사용하도록 코드를 업데이트해야 합니다.
var plugin = navigator.plugins["Contoso.Control"]; if(plugin) { // Contoso control is installed and enabled } else { try { plugin = new ActiveXObject("Contoso"); } catch(e) { // Contoso control is not installed or disabled } }
참고 이 예제와 같이 IE11은 ActiveXObject 개체 유형을 계속 지원하며, ActiveX 컨트롤을 인스턴스화하는 데 사용할 수 있습니다. 그러나 더 이상 window 개체의 속성으로 지원되지는 않습니다.
웹 페이지가 다른 브라우저용 플러그 인을 검색하는 경우 해당 속성을 이미 사용했을 수도 있습니다. 이 경우 이 검색이 다른 형태의 검색 전에 발생하는지 확인합니다. 또한 기능을 검색하고 효과적인 대체를 제공하는지 확인합니다.
플러그 인이 navigator 속성에 정보를 보고하지 않을 수도 있습니다.
새 속성을 지원하려면 설치 시 플러그 인에서 레지스트리를 업데이트해야 합니다.
HKLM\SOFTWARE\Microsoft\Internet Explorer\NavigatorPluginsList
아래에 plugins 속성에서 보고될 이름을 사용하여 키를 만듭니다.- MIME 형식 값을 하위 키의 이름으로 사용하여 플러그 인에서 지원되는 각 사용자 지정 MIME 형식에 대해 하위 키를 만듭니다.
- 64비트 환경의 경우
HKLM\SOFTWARE\Wow6432\Microsoft\Internet Explorer\NavigatorPluginsList
에 동일한 레지스트리 항목을 추가합니다. - 웹 페이지를 호스트하는 서버뿐 아니라 웹 페이지를 로드하는 장치에 고유한 MIME 형식이 올바르게 등록되었는지 확인합니다.
예를 들어 Contoso Control이 "application/contoso" MIME 형식을 사용한다고 가정합니다. 이 경우 다음을 수행합니다.
HKLM\SOFTWARE\Microsoft\Internet Explorer\NavigatorPluginsList 아래에 "Contoso Control" 키를 추가합니다.
"application/contoso"라는 문자열 (REG_SZ) 하위 키를 만듭니다.
- HKLM\SOFTWARE\Wow6432\Microsoft\Internet Explorer\NavigatorPluginsList에 동일한 키를 복사합니다(64비트 환경).
또한 플러그 인(예: VERSIONINFO)을 만드는 데 사용되는 언어에 적합한 기술을 통해 플러그 인이 버전 세부 정보를 표시해야 합니다. 다음은 plugins 속성에서 반환된 플러그 인 개체의 속성으로 사용됩니다.
- 제품 이름(plugin.name), 플러그 인 키의 이름과도 일치해야 함
- 파일 설명(plugin.description).
- 제품 버전(plugin.version).
효과적으로 플러그 인 버전 검색
많은 플러그 인은 오랫동안 유지 관리되며, 사용자가 최신 버전을 설치했다는 보장은 없습니다. 다음 예제는plugin.version 속성을 사용하여 이를 처리하는 한 가지 방법을 보여 줍니다.
Silverlight.isInstalled = function (version) { if (version == undefined) { version = null; } var isVersionSupported = false; try { var tryOlderIE = false; // Detect installation on IE11 and non-IE browsers try { var plugin = navigator.plugins["Silverlight Plug-In"]; if (plugin) { // Plugin object exists - check for version argument if (version === null) { // no string to parse - plugin is installed isVersionSupported = true; } else { // there is a string to parse - check if requested version is installed var actualVerArray = actualVer.split("."); while (actualVerArray.length > 3) { actualVerArray.pop(); } while (actualVerArray.length < 4) { actualVerArray.push(0); } var reqVerArray = version.split("."); while (reqVerArray.length > 4) { reqVerArray.pop(); } var requiredVersionPart; var actualVersionPart; var index = 0; do { requiredVersionPart = parseInt(reqVerArray[index]); actualVersionPart = parseInt(actualVerArray[index]); index++; } while (index < reqVerArray.length && requiredVersionPart === actualVersionPart); if (requiredVersionPart <= actualVersionPart && !isNaN(requiredVersionPart)) { isVersionSupported = true; } } } else { // Plugin object does not exist - get ready to try the IE detection approach. tryOlderIE = true; } } catch (e) { // Exception was thrown while checking for plugin object and version - get ready to try the IE detection approach. tryOlderIE = true; } if (tryOlderIE) { // Detect installation on IE10 and earlier IE browsers via ActiveXObject var control = new ActiveXObject('AgControl.AgControl'); if (version === null) { isVersionSupported = true; } else if (control.IsVersionSupported(version)) { isVersionSupported = true; } control = null; } } catch (e) { isVersionSupported = false; } return isVersionSupported; };
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'WEB' 카테고리의 다른 글
브라우저별 임시 인터넷 파일 위치 경로 (0) | 2017.11.23 |
---|---|
크롬 전체화면 동작 관련 (0) | 2017.09.13 |
ASP 한글 인코딩 캐시 (0) | 2014.04.15 |
윈도우7용 익스플로러11(IE11)의 특징. (2) | 2013.09.25 |
[HTML/CSS] 태그 정리 (0) | 2013.07.07 |