1

我正在按照此示例在我的网站上包含 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 上查看了“检查元素”并得到了错误

Uncaught 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 服务器上(本地主机很好),而不是从桌面(或一般的本地磁盘)加载。这是因为某些 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 回答