-3

重大な問題 - ライブ サイトを展開する前に、すべてのブラウザでテストするのに惨めに失敗しました... ベスト プラクティス - 打ち砕かれました。

その点はさておき、私が働いている会社のために管理しているサイトを実行しているかなりの量の JavaScript があります。私が抱えている問題は、Javascript が IE 以外のすべてで実行されていることです。

すでに言及されている他のいくつかの問題 (主にここ) と比較しましたが、関連するものは見つかりません。誰の助けも素晴らしいでしょう。サイトはhttp://www.agpvideo.comです。

次のコードのどこかに問題があると確信しています...

前もって感謝します。これが私をどこかに連れて行ってくれることを願っています...

function ParseAjax(RootNode)
{
    for(var i = 0; i < RootNode.childNodes.length; i++ )
    {
        var Node = RootNode.childNodes[i];

        if( Node.nodeType == 3 || Node.nodeType == 8 )
        {
            continue;
        }
        else 
        {
            if( console && console.log )
                console.log("Parsing node: " + Node.nodeType + " :: " + Node.nodeName + " :: " + Node.className + " :: " + Node.id);

            var Ajax = null;        

            if(( Ajax = Node.getAttribute("ajax")) == null )
            {
                if( RootNode.childNodes[i].childNodes != null && RootNode.childNodes[i].childNodes.length > 0 )
                {
                    ParseAjax(RootNode.childNodes[i]);
                    continue;
                }
                else
                {
                    continue;
                }
            }
            else
            {   
                if( Node.getAttribute("id") == null )
                {
                    document.writeln("Invalid AJAX callback. Please consult an administrator.");
                    continue;
                }
                else
                {
                    var Img = document.createElement("img");
                    var Src = document.createAttribute("src");
                    Src.value = "resource/img/std/ajax-loader-0.gif";
                    Img.setAttribute("src", Src.value);
                    Node.appendChild(Img);

                    RequestAjax(Node.getAttribute("id"), Ajax);
                    continue;
                }
            }
        }
    }
}


// JavaScript Document
function RequestAjax(ElementId,AjaxRequest)
{
    if( ElementId.length <= 0 )
    {
        return;
    }
    else if( AjaxRequest.length <= 0 )
    {
        return;
    }
    else
    {
        if( console && console.log )
            console.log("Preparing AJAX request...");

        var Request = null;

        if( window.XMLHttpRequest )
        {
            Request = new XMLHttpRequest();
        }
        else
        {
            Request = new ActiveXObject("Microsoft.XMLHTTP");
        }

        Request.ElementId = ElementId;
        Request.onreadystatechange=function()
        {
            if( console && console.log )
            {
                if( Request.readyState <= 1)
                    console.log("AJAX state change: " + Request.readyState);
                else
                    console.log("AJAX state change: " + Request.readyState + "/" + Request.status);
            }

            if( Request.readyState == 4 && Request.status == 200 )
            {
                var TargetElement = null;
                if(( TargetElement = document.getElementById(Request.ElementId)) == null )
                {
                    if( console && console.log )
                        console.log("AJAX TargetElement is null. Cannot set content for " + Request.ElementId);
                }
                else
                {
                    TargetElement.innerHTML = Request.responseText;

                    ParseAjax(TargetElement);
                }
            }
        }

        Request.open("GET",AjaxRequest,true);
        Request.send();
    }
}
4

2 に答える 2

1

次のようにコンソールの存在を確認する必要があります

if(window.console)
{
}

また

if(typeof console !== "undefined")
{

}
于 2013-05-24T19:37:29.153 に答える
1

JavaScript コードに複数のconsole.logステートメントがあり、コンソールが開いていないと IE は実行されません。それらをコメントアウトするか、削除してください。

于 2013-05-24T19:31:19.223 に答える