我正在按照以下示例在我的网站上包括SkyScanner小部件:

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

由于某种原因,我只是得到一个空的div-这可能与键有关吗?当我单击从SkyScanner获得的小部件密钥的激活链接时,我得到一个页面,内容如下:


  说明:服务器上发生应用程序错误。该应用程序的当前自定义错误设置可防止出于安全原因而远程查看该应用程序错误的详细信息。但是,可以由运行在本地服务器计算机上的浏览器查看它。
  
  详细信息:启用此特定错误消息的详细信息是
  在远程计算机上可见,请在其中创建标签
  位于网站根目录中的“ web.config”配置文件
  当前的Web应用程序。然后,此标签应具有
  “模式”属性设置为“关”。


我用以下代码创建了一个web.config文件:

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

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


我在Chrome上查看了“检查元素”并得到了错误


  未捕获的TypeError:对象#没有方法“写入”
  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);

最佳答案

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>

10-08 15:49