none
윈도우10의 엣지브라우저 관련 질문입니다. RRS feed

  • 질문

  • 안녕하세요.

    윈도우10 엣지 브라우저 관련 질문입니다.

    엣지 브라우저는 ActiveX가 허용되지 않아서

    브라우저 체크해서 엣지일 경우에 IE 브라우저를 새창으로 띄우고자 하는데

    혹시 API가 있을까요..? (샘플이라도..)

    자바스크립트로 작성중이며 간단한 소스는

      var agent = navigator.userAgent.toLowerCase();
         if ((navigator.appName == 'Netscape' && navigator.userAgent.search('Trident') != -1) || (agent.indexOf("msie") != -1) ) {
              alert("인터넷 익스플로러 브라우저 입니다.");     
        }else{

             alert("인터넷 익스플로러 브라우저가 아닙니다.");

    //해당 위치에 새창으로 IE브라우저를 띄우고자 합니다.  새탭이 아닌.. 새 창으로...

        }

    window.open을 사용하라는 가이드가 있는데 해당함수는 같은 종류에 브라우저를 띄울 뿐 다른 브라우저로 전환되지 않습니다.

    엣지브라우저로 http://www.naver.com/ (네이버)나

    www.hyundaicard.com (현대카드) 홈페이지 접속하면 위의 질문이 어떤 내용인지 정확하게 아실 수 있을 것 같습니다.

    2015년 7월 28일 화요일 오전 8:57

답변

  • Microsoft Edge의 javascript에서 새로운 IE Process를 시작하는 방법에 대해 문의하셨는데요. 이를 javascript에서 기본으로 제공하지는 않습니다. 기존 ACtiveX에서 가능했던 Native 윈도우 API를 사용하는 부분이 MEF를 통해 가능할 것으로 보입니다. 테스트가 필요합니다.

    https://msdn.microsoft.com/ko-kr/library/dd460648(v=vs.110).aspx
    MEF(Managed Extensibility Framework)

    • 답변으로 표시됨 SMPark82 2015년 8월 13일 목요일 오전 1:17
    2015년 7월 29일 수요일 오전 1:46

모든 응답

  • Microsoft Edge의 javascript에서 새로운 IE Process를 시작하는 방법에 대해 문의하셨는데요. 이를 javascript에서 기본으로 제공하지는 않습니다. 기존 ACtiveX에서 가능했던 Native 윈도우 API를 사용하는 부분이 MEF를 통해 가능할 것으로 보입니다. 테스트가 필요합니다.

    https://msdn.microsoft.com/ko-kr/library/dd460648(v=vs.110).aspx
    MEF(Managed Extensibility Framework)

    • 답변으로 표시됨 SMPark82 2015년 8월 13일 목요일 오전 1:17
    2015년 7월 29일 수요일 오전 1:46
  • javascript를 통해서 사용중인 것 아닌가요..

    질문에서 얘기한 네이버나 현대카드 홈페이지에서 소스보기나, 개발자 모드로 보면

    <!DOCTYPE html>

    <html lang="en" xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <meta charset="utf-8" />
        <title>Internet Explorer 필요</title>
        <link rel="stylesheet" type="text/css" href="ErrorPageStyles.css">
        <script src="ms-appx-web:///Assets/ErrorPages/ErrorPageScripts.js" language="javascript" type="text/javascript"></script>
        <script language="javascript" type="text/javascript">

            window.onload = function () {
                // Populate checkbox
                var url = getUrl();
                if (IsTopLevel())
                {
                    if (IsEnterprise())
                    {
                        var autoLaunch = true;
                        if (HasState(url))
                        {
                            autoLaunch = GetState(url);
                        }
                        if (autoLaunch)
                        {
                            SetState(getUrl(), true);
                            LaunchIE(true);
                        }

                        // Set the checkbox value
                        document.getElementById("autolaunch").checked = autoLaunch;

                        // Show the enterprise string
                        document.getElementById("needie_body").style.display = "none";
                        document.getElementById("needie_configured_automatic_open").style.display = "inline";
                    }
                    else // consumer page
                    {
                        // Hide the checkbox
                        document.getElementById("checkboxTable").style.display = "none";

                        // Show Consumer string
                        document.getElementById("needie_body").style.display = "inline";
                        document.getElementById("needie_configured_automatic_open").style.display = "none";
                    }
                }
                else
                {
                    // Hide the checkbox, button, and "continue" link in iframes
                    document.getElementById("checkboxTable").style.display = "none";
                    document.getElementById("launchIE").style.display = "none";
                    document.getElementById("ContinueInSpartan").style.display = "none";
                }

                // Populate ContinueInSpartan link
                document.getElementById("ContinueInSpartan").href = getFullUrl();

                goToLocalizedErrorPage();
            }

            getFullUrl = function ()
            {
                var docUrl = document.location.href;
                var beginIndex = docUrl.indexOf('#') + 1;
                return docUrl.substring(beginIndex);
            }

            // Returns the code for why we navigated to NeedIE:
            // 0 = No transition/Error
            // 1 = EMIE Site List
            // 2 = Intranet Policy is set
            // 3 = Cloud CV List
            // 4 = Keep in Spartan
            getReason = function ()
            {
                var docUrl = document.location.href;
                var reasonStr = '?reason=';
                var beginIndex = docUrl.indexOf(reasonStr) + reasonStr.length;
                var lastIndex = docUrl.indexOf('#');
                // Check that the '?reason=' comes before '#<url>', so that we aren't searching the error url
                if (beginIndex < lastIndex)
                {
                    return docUrl.charAt(beginIndex);
                }
                return 0;
            }

            IsEnterprise = function ()
            {
                // If NeedIE is showing because the URL was Enterprise SiteList (1) or
                // the IntranetToIE policy is set (2), we want the Enterprise experience
                var reason = getReason();
                return (reason == 1 || reason == 2);
            }

            IsTopLevel = function ()
            {
                return (window.top == window.self);
            }

            // Returns true if we have state saved in registry for this site
            HasState = function (url)
            {
                return window.external.HasNeedIEAutoLaunchFlag(url);
            }

            // Get the auto-launch preference from registry
            GetState = function (url)
            {
                return window.external.GetNeedIEAutoLaunchFlag(url);
            }

            // Set the auto-launch preference from registry
            SetState = function (url, state)
            {
                window.external.SetNeedIEAutoLaunchFlag(url, state);
            }
           
            LaunchIE = function (automated)
            {
                window.external.LaunchIE(getFullUrl(), automated);
            }

            OnAutoLaunchClicked = function (checkbox)
            {
                SetState(getUrl(), checkbox.checked);
            }

            // Launch URL in IE
            OnLaunchIEClicked = function ()
            {
                SetState(getUrl(), document.getElementById("autolaunch").checked);
                LaunchIE(false);
            }

        </script>
    </head>

    <body>
        <div id="Wrapper">
            <div id="NotConnected">
                <table>
                    <tr>
                        <td>
                            <img id="imageicon" alt="Internet Explorer" style="font-weight:normal" src="ielogo.svg"/>
                        </td>
                        <td>
                            <h1 id="needie_header">이 웹 사이트에는 Internet Explorer가 필요함</h1>
                            <p id="needie_body">
                                이 웹 사이트는 Internet Explorer에 최적화된 기술을 사용합니다.
                            </p>
                            <p id="needie_configured_automatic_open" style="display:none">조직에서 이 사이트가 자동으로 Internet Explorer에서 열리도록 설정했습니다.</p>
                            <br />
                            <button id="launchIE"
                                    class="pushbutton"
                                    type="submit"
                                    onclick="OnLaunchIEClicked();">
                                <id id="needie_open_in_ie">Internet Explorer에서 열기</id>
                            </button>
                            <table id="checkboxTable" style="margin:16px 0px 0px 0px">
                                <tr>
                                    <td class="checkboxes">
                                        <label>
                                            <input type="checkbox" id="autolaunch" onclick="OnAutoLaunchClicked(this);" />
                                            <span class="text-body">
                                                <id id="needie_automatically_open">이후 이 사이트를 자동으로 Internet Explorer에서 열기</id>
                                            </span>
                                        </label>
                                    </td>
                                </tr>
                            </table>
                            <br />
                            <br />
                            <br />
                            <a id="ContinueInSpartan" href=""><id id="needie_open_in_spartan">Microsoft Edge에서 계속하기</id></a>
                        </td>
                    </tr>
                </table>
            </div>
        </div>
    </body>
    </html>

    ================================================================================================================================
    ================================================================================================================================
    ================================================================================================================================
    ================================================================================================================================


    var resourceJSON = "";

    function getUrl() {
        "use strict";

        var docUrl = document.location.href;
        var urlResult = docUrl;

        var beginIndex = docUrl.indexOf('#') + 1;

       
        if (docUrl.indexOf("file://", beginIndex) == -1) {
           
            var protocolEndIndex = docUrl.indexOf("://", beginIndex);

           
            var endIndex = docUrl.indexOf("/", protocolEndIndex + 3);

            urlResult = docUrl.substring(beginIndex, endIndex);
        }
        return urlResult;
    }

    function isExternalUrlSafeForNavigation(urlStr) {
        "use strict";
        var regEx = new RegExp("^(http(s?)|ftp|file)://", "i");
        return regEx.exec(urlStr);
    }

    function clickRefresh() {
        "use strict";
        var currentLocation = document.location.href;
        var poundIndex = currentLocation.indexOf('#');

        if (poundIndex != -1 && poundIndex + 1 < currentLocation.length && isExternalUrlSafeForNavigation(currentLocation.substring(poundIndex + 1))) {
            window.location.replace(currentLocation.substring(poundIndex + 1));
        }
    }

    function clickSearch() {
        "use strict";
        var currentLocation = document.location.href;
        var poundIndex = currentLocation.indexOf('#');

        if (poundIndex != -1 && poundIndex + 1 < currentLocation.length && isExternalUrlSafeForNavigation(currentLocation.substring(poundIndex + 1))) {
            window.open('http://www.bing.com/search?q=' + currentLocation.substring(poundIndex + 1));
        }
    }

    function getNavigationURL() {
        "use strict";
        var currentLocation = document.location.href;
        var poundIndex = currentLocation.indexOf('#');
        var possibleNavigationURL = currentLocation.substring(poundIndex + 1);

        if (poundIndex != -1 && poundIndex + 1 < currentLocation.length && isExternalUrlSafeForNavigation(possibleNavigationURL)) {
            return possibleNavigationURL;
        } else {
            return '';
        }
    }

    function isMergedErrorFile() {
        "use strict";
        var url = document.location.href.toLowerCase();
       
        var localAnchor = url.indexOf("#");
        url = url.substring(0, (localAnchor == -1) ? url.length : localAnchor);

        var query = url.indexOf("?");
        url = url.substring(0, (query == -1) ? url.length : query);

        return url.indexOf("errorpages.html", url.lastIndexOf("/") + 1) >= 0;
    }

    function getErrorCodeFromQuery() {
        "use strict";
        var errorCode = '';
        var errorQueryKey = "error=";

        var query = document.location.search;
        var errorQueryStart = query.indexOf(errorQueryKey);
        if (errorQueryStart > 0) {
            var ampersandStart = query.indexOf("&", errorQueryStart);
            if (ampersandStart > 0) {
                errorCode = query.substring(errorQueryStart + errorQueryKey.length, ampersandStart);
            } else {
                errorCode = query.substring(errorQueryStart + errorQueryKey.length);
            }
        }

        return errorCode;
    }

    function showErrorPage() {
        "use strict";
        if (isMergedErrorFile()) {
            setWebpageUrl();

            var errorCode = getErrorCodeFromQuery();
            setDocumentTitle(errorCode);
            initializeErrorCodeDiv(errorCode);

           
            document.getElementById(errorCode).style.display = "inline";
        }
    }

    function goToLocalizedErrorPage() {
        "use strict";
         showErrorPage();
    }

    function setWebpageUrl() {
        "use strict";
        var url = getUrl();
        var urlElements = document.getElementsByClassName("webpageURL");
        for (var i = 0; i < urlElements.length; i++) {
            urlElements[i].textContent = url;
        }
    }

    function setDocumentTitle(errorCode) {
        "use strict";
       
        if (errorCode == 3) { document.title = L_Syntax_Title_TEXT; }
        else if (errorCode == 4) { document.title = L_NavCancel_Title_TEXT; }
        else if (errorCode == 5) { document.title = L_PhishingSite_Title_TEXT; }
        else if (errorCode == 6) { document.title = L_InvalidCert_Title_TEXT; }
        else if (errorCode == 7) { document.title = L_SSLNavCancel_Title_TEXT; }
        else if (errorCode == 8) { document.title = L_UnknownProtocol_Title_TEXT; }
        else if (errorCode == 9) { document.title = L_ForbidFraming_Title_TEXT; }
        else if (errorCode == 10) { document.title = L_ProxyError_Title_TEXT; }
       
        else if (errorCode == 12) { document.title = L_TLSError_Title_TEXT; }
       
        else if (errorCode == 14) { document.title = L_HSTS_Title_TEXT; }
       
        else if (errorCode == 17) { document.title = L_PDF_Title_TEXT; }
        else if (errorCode == 18) { document.title = L_PDF_Title_TEXT; }
        else if (errorCode == 400) { document.title = L_Http_400_Title_TEXT; }
        else if (errorCode == 403) { document.title = L_Http_403_Title_TEXT; }
        else if (errorCode == 404) { document.title = L_Http_404_Title_TEXT; }
        else if (errorCode == 405) { document.title = L_Http_405_Title_TEXT; }
        else if (errorCode == 406) { document.title = L_Http_406_Title_TEXT; }
        else if (errorCode == 408) { document.title = L_Http_408_409_Title_TEXT; }
        else if (errorCode == 409) { document.title = L_Http_408_409_Title_TEXT; }
        else if (errorCode == 410) { document.title = L_Http_410_Title_TEXT; }
        else if (errorCode == 500) { document.title = L_Http_500_Title_TEXT; }
        else if (errorCode == 501) { document.title = L_Http_501_Title_TEXT; }
        else if (errorCode == 505) { document.title = L_Http_501_Title_TEXT; }
    }

    function initializeErrorCodeDiv(errorCode) {
        "use strict";
        if (errorCode == 1 || errorCode == 2) {
           
            initializeDnsError();
        }
    }

    function initializeDnsError() {
        "use strict";
       
        checkConnectionForDnsError();

       
        if (document.addEventListener) {
            addEventListener("offline", reportConnectionEvent, false);
        }
        else {
            attachEvent("onoffline", reportConnectionEvent);
        }

       
        document.body.ononline = reportConnectionEvent;
        document.body.onoffline = reportConnectionEvent;
    }

    function checkConnectionForDnsError() {
        "use strict";
        var notConnected = document.getElementById("NotConnected");
        var pageUnavailable = document.getElementById("PageUnavailable");

        if (navigator.onLine) {
            document.title = L_Unavailable_Title_TEXT;

            notConnected.style.display = "none";
            pageUnavailable.style.display = "";
        }
        else {
            document.title = L_Disconnected_Title_TEXT;

            notConnected.style.display = "";
            pageUnavailable.style.display = "none";
        }
    }

    function reportConnectionEvent(e) {
        "use strict";
        if (!e) e = window.event;

        if ('online' == e.type) {
           
            setTimeout("clickRefresh()", 1000);
        }
        else {
            checkConnectionForDnsError();
        }
    }

    관련된 소스가 있는데 스크립트 형식으로 되어있는것 아닌가요..?

    2015년 7월 29일 수요일 오전 4:17