0

私のフォームは、InternetExplorerでコンソールを押したときにのみ機能します。他のすべてのブラウザで正常に動作します。

HTMLは次のとおりです。コンソールを起動すると、IEですべてが正常に機能するのはなぜですか。

        <div class="clubregister">
    <h2>
        Signup Form</h2>
    <p>
        We wont give your information to anyone. It is used to notify you of promotions occasionally and required for registration.</p>
    <label for="name">Name:</label><br />
    <input name="name" type="text" /><br />
    <label for="address">Address:</label><br />
    <input name="address" type="text" /><br />
    <label for="phone">Phone:</label><br />
    <input name="phone" type="text" /><br />
    <label for="email">Email:</label><br />
    <input name="email" type="text" /><br />
    <input class="button" name="submit" style="margin-top:10px;" type="button" value="Join Club" /></div>

これがJavascriptです:これは、コンソールを起動したときにIEでこれらすべてがどのように機能するかは本当に奇妙です。

   <script type="text/javascript">
   /////////////////////////////////////////////
   //ARRAY DUMP FUNCTION
   function dump(a,b){var c="";if(!b)b=0;var d="";for(var e=0;e<b+1;e++)d+="          ";if(typeof a=="object"){for(var f in a){var g=a[f];if(typeof g=="object"){c+=d+"'"+f+"'   ...\n";c+=dump(g,b+1)}else{c+=d+"'"+f+"' => \""+g+'"\n'}}}else{c="===>"+a+"<===("+typeof  a+")"}return c}
  /////////////////////////////////////////////
$(document).ready( function() {
    $('.clubregister  input[name="submit"]').click( function(event) {
        event.preventDefault();
                    /*alert('This section is under construction, please contact us to get set up!\n Sorry for the inconvenience');return false;*/
        //CREATE ARRAY FROM FORM DATA SERIALIZED
        var $formData = $('.clubregister input[type="text"], .clubregister textarea').serializeArray();
        //PUSH ACTION TO ARRAY
        $formData.push({'name':'action','value':'registerForClub'});
        //SEND DATA TO HANDLER
        $.ajax({
            url:'http://torkliftcentralrv.com/club_register_handle.php',
            dataType:'json',
            async:false,
            data:$formData,
            success: function(data) {
                //console.log(dump(data));
                //CREATE MESSAGE
                var message = '';
                var consolemessage = '';
                //IF ERRORS
                if(typeof data['error'] !== 'undefined') {
                    //APPEND ERRORS TO MESSAGE
                    $.each( data['error'], function( index,data) {
                        message += (data + "\n");
                    });
                }
                //IF MESSAGES
                if(typeof data['message'] !== 'undefined') {
                    //APPEND MESSAGES TO MESSAGE
                    $.each( data['message'], function( index,data) {
                        message += (data + "\n");
                    });
                }

                //IF CONSOLE MESSAGES
                if(typeof data['console'] !== 'undefined') {
                    //APPEND CONSOLE MESSAGES TO MESSAGE
                    $.each( data['console'], function( index,data) {
                        consolemessage += (data + "\n");
                    });
                }
                //IF SUCCESS SENT FROM SERVER
                if(typeof data['success'] !== 'undefined') {
                    //CLEAR FORM
                    $('.clubregister input[type="text"], .clubregister textarea').val('');
                }
                alert(message);

            }
        });
    });
});

ありがとう!

4

2 に答える 2

4

コメントで言ったように、console.logどこかにコメントなしの電話があるのではないかと思います。

開発者ツールが開いていない場合はコンソールオブジェクトを使用できないため、これはIEでよくある問題です。

一般的な回避策は、ダミーオブジェクトを作成して、使用できない場合に置き換えることです。

if (!window.console) {
    var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
    "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
    window.console = {};
    for (var i = 0; i < names.length; ++i) {
        window.console[names[i]] = function() {};
    }
}
于 2012-12-04T17:56:25.577 に答える
3

Internet Explorerはconsole、開発者ツールがアクティブな場合(F12キーを押すなど)にのみオブジェクトを公開します。

開発者ツールが非表示になっている場合、呼び出しconsole.logは例外をスローするため、javascriptコードは壊れます。

于 2012-12-04T17:54:22.337 に答える