0

ボタンのクリックを任意のドメインからデータベースに記録する追跡ツールを作成しています。

Web Worker を使用したかったのですが、これをサポートするブラウザーのリストが限られているため、ブラウザー検出を追加して、それらを正しいパスに送りました。

私の問題は、ブラウザー検出を IE に追加すると、サーバーの応答が得られなくなったことです (投稿、リダイレクト、何もありません) 何か間違ったことをしていますか?

これはボタンが検出されている場所です

            if ((isIE) && (isIE == true)) {

            function addBtnClickListener(e) {
                var btnClicked = this;

                var eventType = "button.click";
                var ctrBtnText = btnClicked.value;
                track(btnClicked, eventType, '', '', ctrBtnText, '', '', '', btnClicked);

                return false;
            }
        }
        else if ((isChrome) && (isChrome == true) || (isFirefox) && (isFirefox == true) || (isSafari) && (isSafari == true) || (isOpera) && (isOpera == true)) {
            //WEB WORKERS
            if (typeof SharedWorker != 'undefined') { //shared web worker is supported

                //Shared Worker
                function addBtnClickListener() {
                    var btnClicked = this;

                    var eventType = "button.click";
                    var ctrBtnText = btnClicked.value;
                    track(btnClicked, eventType, '', '', ctrBtnText, '', '', '', null, btnClicked);

                    return false;
                }
            }

            else if (typeof (Worker) != "undefined") { //web worker is supported

                //Web Worker
                function addBtnClickListener(e) {
                    e.preventDefault();
                    var btnClicked = this;

                    var eventType = "button.click";
                    var ctrBtnText = btnClicked.value;
                    track(btnClicked, eventType, '', '', ctrBtnText, '', '', '', btnClicked, null);
                    //this.click();
                    return true;
                }
            }

            else {
                //function addBtnClickListener(e) {
                var btnClicked = this;

                var eventType = "button.click";
                var ctrBtnText = btnClicked.value;
                track(btnClicked, eventType, '', '', ctrBtnText, '', '', '', btnClicked);

                return false;
                //}
            }
        }
        else { }

これは彼らが記録されている場所です

        if ((isIE) && (isIE == true)) {

            console.log("IE");

            doRequestMethod(url);

            function GetXmlHttpObject() {
                if (window.XMLHttpRequest) {
                    //for IE7+, Firefox, Chrome, Opera, Safari
                    return new XMLHttpRequest();
                }
                if (window.ActiveXObject) {
                    //for IE6, IE5
                    return new ActiveXObject("Microsoft.XMLHTTP");
                }
                return null;
            }

            function doRequestMethod(url) {
                var xmlhttp = GetXmlHttpObject();
                if (xmlhttp == null) {
                    console.log("Browser does not support HTTP Request");
                    return;
                }
                xmlhttp.open("POST", url, true);
                xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                xmlhttp.send(url);
            }

        }
        else if ((isChrome) && (isChrome == true) || (isFirefox) && (isFirefox == true) || (isSafari) && (isSafari == true) || (isOpera) && (isOpera == true)) {

            //WORKS AS IT SHOULD

        }
        else { }

IE 検出検出を削除すると、フォームは IE で正しく機能しますが、何か問題がありますか?

4

0 に答える 0