1

この例に従って、自分の Web サイトに SkyScanner ウィジェットを含めています。

http://business.skyscanner.net/portal/en-GB/Documentation/Widgets

何らかの理由で、空の div を取得するだけです。これはキーと関係があるのでしょうか? SkyScanner から取得したウィジェット キーのアクティベーション リンクをクリックすると、次のようなページが表示されました。

説明: サーバーでアプリケーション エラーが発生しました。このアプリケーションの現在のカスタム エラー設定では、アプリケーション エラーの詳細をリモートで表示できません (セキュリティ上の理由から)。ただし、ローカル サーバー マシンで実行されているブラウザで表示することはできます。

詳細: この特定のエラー メッセージの詳細をリモート マシンで表示できるようにするには、現在の Web アプリケーションのルート ディレクトリにある "web.config" 構成ファイル内にタグを作成してください。次に、このタグの「モード」属性を「オフ」に設定する必要があります。

次のコードで web.config ファイルを作成しました。

<!-- Web.Config Configuration File -->

<configuration>
    <system.web>
        <customErrors mode="Off"/>
    </system.web>
</configuration>

Chromeで「要素の検査」を見て、エラーが発生しました

キャッチされていない TypeError: Object # has no method 'write' api.ashx?key=[KEY]:1

これはJSです:

var API_KEY = 'b7290ac3-1f9f-4575-88a7-89fed0c61f7f',
MAIN_URL = 'http://api.skyscanner.net/api.ashx?key=' + API_KEY;

function main(){
    console.log('loaded module');
    var snippet = new skyscanner.snippets.SearchPanelControl();
    snippet.setCurrency('GBP');
    snippet.setDeparture('uk');
    snippet.draw(document.getElementById('snippet_searchpanel'));
};

function newWrite(str) {
    $(str).appendTo('body');
}

var oldWrite = document.write;
document.write = newWrite;

function onMainSkyscannerScriptLoad(e) {
    console.log('loaded main script');
    skyscanner.loadAndWait('snippets', '1', {'nocss' : true}, main);
}

$('button').click(function() {
                  console.log('getting main script');
                  $.getScript(MAIN_URL, onMainSkyscannerScriptLoad);
                  });

また、これを使用してウィジェットをパーソナライズしました。

skyscanner.load("snippets","2");
function main(){
    var snippet = new skyscanner.snippets.SearchPanelControl();
    snippet.setShape("box300x250");
    snippet.setCulture("en-GB");
    snippet.setCurrency("USD");
    snippet.setColourScheme("classicbluelight");
    snippet.setProduct("flights","1");
    snippet.setProduct("hotels","2");
    snippet.setProduct("carhire","3");

    snippet.draw(document.getElementById("snippet_searchpanel"));
}
skyscanner.setOnLoadCallback(main);
4

1 に答える 1

0

Skyscanner B2Bサポートエンジニアはこちら これでまだ問題がありますか?

迅速な対応が必要な場合は、こちらからお問い合わせください: http://business.skyscanner.net/portal/en-GB/Home/Contact

最初に確認することは、ファイルが Web サーバー (localhost で問題ありません) 上にあり、デスクトップ (または通常はローカル ディスク) から読み込まれていないことです。これは、Skyscanner JS コードの一部が //api.skyscanner.net のような URL を使用して他のファイルを検索するためです。つまり、ファイルをデスクトップに保存してそこから開くことはできません (空の div として表示されます)。ウィジェットを描画する最も基本的な例を次に示します。これをファイルに入れてサーバー経由でアクセスしてみてはいかがでしょうか? それが機能する場合は、その上に構築できます:)

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" >
    <head>
        <script type="text/javascript" src="//api.skyscanner.net/api.ashx?key=b7290ac3-1f9f-4575-88a7-89fed0c61f7f"></script>
        <script type="text/javascript">
            skyscanner.load("snippets","2");
            function main(){
                var snippet = new skyscanner.snippets.SearchPanelControl();
                snippet.setShape("box300x250");
                snippet.setCulture("en-GB");
                snippet.setCurrency("USD");
                snippet.setProduct("flights","1");
                snippet.setProduct("hotels","2");
                snippet.setProduct("carhire","3");

                snippet.draw(document.getElementById("snippet_searchpanel"));
            }
            skyscanner.setOnLoadCallback(main);
         </script>
    </head>
    <body>
        <div id="snippet_searchpanel" style="width: auto; height:auto;"></div>
    </body>
</html>
于 2014-04-21T07:47:15.430 に答える