1

JQueryを使用した外部JavaScriptの読み込みに問題があります。この外部ファイルを読み込もうとすると、ブラウザウィンドウが空白になり、Firefoxでは次のようにリダイレクトされます。

wyciwyg:// 40 / http://mydomain.com/myfile.html

私がやろうとしているのは、walkscoregoogleマップをページ上のdivの1つにロードすることです。$ .get()メソッド、.load()、$。getScript()、および$ .requireScript()jqueryプラグインを使用してみましたが、$。getの直後にalert()を配置すると、1つの場合を除いて何も機能しません。 () 方法。この場合、ブラウザはどこにもリダイレクトされず、ウォークスコアマップがページに表示されます。

これは私の頭のセクションのスクリプトです:

<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">

    function loadWalkScore() { $.get("http://www.walkscore.com/tile/show-tile.php?wsid=87439b0626c9eaeacfd6d8d5598afc13",null,null,"script"); } </script>

ページ本文のスクリプト:

<div id="contentArea" style="margin: 20px 0px 10px 10px; border: 1px solid #CCC;">

<script type="text/javascript">
    var ws_lat = "40.710318";
    var ws_lon = "-74.016553";
    var ws_width = "630";
    loadWalkScore();
</script>

</div>

私が持っているすべての例も参照してください(最初の1つだけが機能します):

// 1. $ .get()-動作例、$。get()メソッドの直後にアラートがあります

websvit。com / tabs / walkscore-with-alert.html

// 2. $ .get()-アラートなしで上記とまったく同じ、機能しない

websvit。com / tabs / walkscore-get.html

// 3. .load()-walkscorejsを使用したhtmlファイルのロードは機能しません

websvit。com / tabs / walkscore-load.html

// 4. $ .getScript()-機能しません

websvit。com / tabs / walkscore-getscript-external.html

// 5. $ .getScript()ローカルに保存されたwalkscore js、機能しません

websvit。com / tabs / walkscore-getscript-local.html

// 6. $ .requireScript()-jqueryプラグインを使用すると、機能しません

websvit。com / tabs / walkscore-get-plugin.html

4

2 に答える 2

1

問題は、WalkScoreスクリプトの記述方法であり、ajax呼び出しを機能させるには、(非同期ではなく)同期的に実行する必要があります。これが、alert()があると機能する理由です。

コードを調べ、WalkScoreの呼び出しによって返されたスクリプトを調べた後、それを機能させる方法を見つけました。コールバックで$.getScriptを使用し、iframeをcontentAreaDIVに追加できます。WalkScoreスクリプトは、このためにdocument.write()を使用します。

以下のスクリプトをheadタグにコピーします。wsidがドメインに対して正しいことを確認してください。正しいと、空白のページが表示されます。現在DIV内にあるスクリプトタグを削除します。

<script type="text/javascript"> 
    var ws_lat = "40.710318";
    var ws_lon = "-74.016553";
    var ws_width = "630";
    $(function(){
        $.getScript("http://www.walkscore.com/tile/show-tile.php?wsid=87439b0626c9eaeacfd6d8d5598afc13", function(){            
          $('<iframe src="http://www.walkscore.com/serve-tile.php?' + ws_params 
                                     + '" marginwidth="0" marginheight="0" vspace="0" hspace="0"'
                                     + ' allowtransparency="true" frameborder="0" scrolling="no" width="' 
                                     + ws_width + 'px" height="' + ws_height + 'px" style="' + ws_iframe_css_final + '"></iframe>')
                                     .appendTo("#contentArea");
       });
    });
</script>
于 2009-07-11T00:23:30.167 に答える
1

私には自分の問題に対する解決策があります。ajaxを使用してwalkscorejavascriptをロードするのを避け、単純なiframeを使用する方法を見つけました。誰かがwalkscoreマップで同様の問題を抱えている場合に備えて、ここにコードを投稿しています。

    var ws_lat = "40.710318";
    var ws_lon = "-74.016553";
    var ws_width = "630";
    var ws_height = "300";
    var ws_iframe_css_final = "border: 0";

    var ws_params = "wsid=87439b0626c9eaeacfd6d8d5598afc13";
    ws_params += "&lat=" + ws_lat + "&lng=" + ws_lon;

    $("#walkscore_map").html('<iframe src="http://www.walkscore.com/serve-tile.php?' + ws_params + '" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" frameborder="0" scrolling="no" width="' + ws_width + 'px" height="' + ws_height + 'px" style="' + ws_iframe_css_final + '"></iframe>');
于 2009-07-13T16:18:50.283 に答える