0

私は過去数週間、旅行と開発を行ってきました。私が開発しているサイトはうまく機能していました。

それから、先日、ネットワークに接続したところ、ページは問題なく「見えた」のですが、javascript が実行されていないことが判明しました。firebug を確認しましたが、エラーはありませんでした。おそらくスクリプトが読み込まれていないのではないかと疑っていたからです (Google マップ API と fbconnect を読み込むだけでなく、jQuery と jQuery UI に Google API を使用しています)。問題がこれらのページの 1 つがロードされていない場合、エラーが発生するのではないかと思いますが、何もありませんでした。

うまく接続できていないのかと思い、ネットワークに再接続し、コンピュータを再起動して、ローカル バージョンを実行しようとしました。私は何も得ませんでした。実行されていないローカル バージョンは、問題の原因が外部 JavaScript のロードであることも示唆していました。

その1つのネットワークで奇妙なこととしてそれを通過させました。残念ながら、今は何百マイルも離れています。

今日、私の兄弟は、彼が空港で使用していたネットワークが私のページを読み込めないという電子メールを私に送りました。同じ問題。すべてが適切にレイアウトされており、レイアウトの一部が Javascript で設定されているため、明らかに JavaScript が実行されています。

彼もエラーはありませんでした。もちろん、彼は飛行機に乗り込み、もう空港にはいません。現在、サイトは彼のコンピューターで動作します (そして、私は何も変更していません)。

この状況で何が起こったのかを理解するには、いったいどうすればよいでしょうか。これは、おそらく 12 程度のネットワークのうちの 2 つです。しかし、機能しないネットワークを見つける方法がわかりません (小さな町に住んでいるので、機能しないネットワークを見つけるのは難しいかもしれません)。

何か案は?このサイトはまだ開発中なので、まだリンクを投稿したくありません (ただし、数日後には投稿できます)。動作していないことがわかるのは、ロード時およびクリック時に呼び出される JavaScript 関数です。だから私はそれがjavascriptの問題だと思いますが、エラーはありません。

これらのネットワークのいずれかを見つけてそこに座ることができれば、これはそれほど大きな問題にはなりませんが、できません。それで、あなたは何をしますか?

編集 - - - - - - - - - - - - - - - - - - - - - - - - - --------- 呼び出されない最初の関数 (複数可 - リンクされている) は以下のとおりです。呼び出しが行われていないため、.ajax 呼び出しのコードを切り取りました。

function getResultsFromForm(){

    jQuery('form#filterList input.button').hide();
    var searchAddress=jQuery('form#filterList input#searchTxt').val();
    if(searchAddress=='' || searchAddress=='<?php echo $searchLocation; ?>'){
        mapShow(20, -40, 0, 'areaMap', 2);
        jQuery('form#filterList input.button').show();
        return;
    }

    if (GBrowserIsCompatible()) {
        var geo = new GClientGeocoder(); 
        geo.setBaseCountryCode(cl.address.country);

        geo.getLocations(searchAddress, function (result) 
                {    

                if(!result.Placemark && searchAddress!='<?php echo $searchLocation; ?>'){
                jQuery('span#addressNotFound').text('<?php echo $addressNotFound; ?>').slideDown('slow');
                jQuery('form#filterList input.button').show();

                } else {
                jQuery('span#addressNotFound').slideUp('slow').empty();
                jQuery('span#headerLocal').text(searchAddress);
                var date = new Date();
                date.setTime(date.getTime() + (8 * 24 * 60 * 60 * 1000));
                jQuery.cookie('address', searchAddress, { expires: date});
                var accuracy= result.Placemark[0].AddressDetails.Accuracy;

                var lat = result.Placemark[0].Point.coordinates[1];
                var long = result.Placemark[0].Point.coordinates[0];
                lat=parseFloat(lat);
                long=parseFloat(long);
                var getTab=jQuery('div#tabs div#active').attr('class');

                jQuery('div#tabs').show();
                loadForecast(lat, long, getTab, 'true', 0);
                var zoom=zoomLevel();
                mapShow(lat, long, accuracy, 'areaMap', zoom );

                }
                });
    }


}


function zoomLevel(){

    var zoomarray= new Array();
    zoomarray=jQuery('span.viewDist').attr('id');
    zoomarray=zoomarray.split("-");
    var zoom=zoomarray[1];
    if(zoom==''){
        zoom=5;
    }
    zoom=parseFloat(zoom);
    return(zoom);

}
function loadForecast(lat, long, type, loadForecast, page){

    jQuery('div#holdForecast').empty();
    var date = new Date();
    var d  = date.getDate();
    var day = (d < 10) ? '0' + d : d;
    var m = date.getMonth() + 1;
    var month = (m < 10) ? '0' + m : m;
    var year='2009';
    toDate=year+'-'+month+'-'+day;

    var genre=jQuery('span.genreblock span#updateGenre').html();


    var numDays='';

    var numResults='';


    var range=jQuery('span.viewDist').attr('id');
    var dateRange = jQuery('.updateDate').attr('id');
    jQuery('div#holdShows ul.showList').html('<li class="show"><div class="showData"><center><img src="../hwImages/loading.gif"/></center></div></li>');

    jQuery('div#holdShows ul.'+type+'List').livequery(function(){
            jQuery.ajax({
type: "GET",
url: "processes/formatShows.php",
data: "output=&genre="+genre+"&numResults="+numResults+"&date="+toDate+"&dateRange="+dateRange+"&range="+range+"&lat="+lat+"&long="+long+'&page='+page,
success: function(response){

編集2 ------------------------------------------------ ------------------------------

問題はサイトを読み込めないことではなく、サイトはほとんどの接続で正常に動作しますが、サイトが動作しない場合があり、エラーがスローされず、何も変化しないことを覚えておいてください. 私の兄弟は、私が問題を抱えていなかった間、今日早くそれを実行できなかったので、それは彼の場所/ネットワークに関係していました. しかし、ページが読み込まれ、彼はつながりを持っていました。サイトにアクセスしたのは初めてだったので、何も現金化できませんでした。数日前に問題が発生したときと同じです。私は何も変更せず、別のネットワークに接続し、すべてが正常に機能しました。

4

6 に答える 6

1

これに関する問題は、GoogleマップがIPアドレスを介して北米内の緯度/経度を確実に見つけることができると仮定したことにありました.

私は追加します

if(!google.loader.ClientLocation)
Google が IP 経由で場所を見つけられない場合の関数。

最も奇妙な点は、パロアルトのダウンタウンにあるオフィスでこのエラーが発生したことでした。これは、Google ジオコーダーによって大量にマッピングされていると思われました。

于 2009-10-14T16:57:41.370 に答える
1

2 つのこと: まず、開発時にサイトにローカルな JavaScript を取得します。キャッシングを利用するために他の場所からロードすることは、私が最後まで残した最適化です。また、問題を最小限に抑えるために、Google などの可用性の高いリモート サイトからのみロードします。第二に、JavaScript を有効にせずにサイトを少なくとも最低限使用できるようにします。たとえば、ページが読み込まれたときに実行される JavaScript の Ajax 機能に置き換えられるフォーム ポストバックを使用します。すべてを手に入れることはできないかもしれませんが、エレガントな方法ではないにしても、JavaScript を使用しなくてもほとんどのことを実行できることがわかりました。

これで当面の問題が解決されないことは承知していますが、このような状況に直面してもサイトを引き続き利用できるようにするのに役立つと思います。

于 2009-03-03T01:36:54.583 に答える
0

いくつかのこと:

1.) スクリプトを含める場所...別の終了タグがあることを確認してください! それらを閉じないでください。

<script src="..."/><!--self-closing will fail, -->

<script src="..."></script><!--this will work -->

2.) $() ではなく jQuery() を使用している理由はありますか?

3.) SERVER は、ローカル環境では指定していない DOCTYPE を指定していますか?

4.) どのブラウザでテストしていますか? 特に IE でテストしていますか? もしそうなら Firefox で動作しますか?

5.) URL を提供できない場合、生成されたコードの一部を投稿できますか?

于 2009-03-03T01:58:16.747 に答える
0

開発環境ですべてのスクリプトが期待どおりにロードされていることを確認したら、ページからスクリプトを 1 つずつ削除して、発生していた問題を再現するスクリプトを確認してください。読み込み中。

Firebug には、ライブ HTTP ヘッダーと非常によく似た機能を実行する Net タブがあり、ロードのタイミングや ajax リクエストも追跡します。

于 2009-03-03T02:07:28.177 に答える
0

一部の JS が別のサーバーによってホストされている場合 (たとえば、自分でコピーをホストするのではなく、jQuery サイトから jQuery のようなものを含めている場合)、これらのサイトの 1 つが一時的にダウンしている可能性があります。

"Live HTTP Headers" ( Mozilla Addons サイトで入手可能) などを使用して、HTTP ヘッダーをリアルタイムで監視することができます。これは、Web 開発を行うときに非常に役立ちます。すべての JS が実際に正しくロードされているかどうかを非常に迅速に判断できるはずです。

Ethereal や Wireshark などを使用することもできますが、要求/応答ヘッダーを表示することだけが必要な場合は、おそらく少し手間がかかります。アドオンを使用すると、はるかに手間がかかりません。

于 2009-03-03T01:39:02.660 に答える
0

これには、ほとんどの場合、Firefox プラグイン「Firebug」をお勧めします。

まず、スクリプトを調べて、スクリプトが読み込まれたことを確認します。これにより、「リモート ソースから読み込まれなかった」という問題が除外されます。

第 2 に、JavaScript コンソールで発生したエラーが表示されます。これは、以前は何も表示されていないように見えたものを指摘する場合があります。

最後に、別のドメインから JavaScript を使用する場合は、クロスサイト スクリプティングの問題に注意してください。

于 2009-10-14T08:11:04.747 に答える