Гаджет для Windows 7
Всем здравствуйте.
Пишу гаджет для Windows 7 в Visual Studio 2008. Цель его - получение курса доллара и евро с сайта Центробанка. С помощью стандартного запуска (автоматически используется браузер, установленный по умолчанию; я использую здесь IE (с Ff проблемки некоторые появляются)) выводится абсолютно правильный результат. Однако когда пытаюсь запустить сам гаджет, то отображается лишь первый символ результата; и размер гаджета совершенно не соответствует заявленному в программном описании. Например, правильный результат: 1 USD = 28,1211 RUB and 1 EUR = 40,4859 RUB А на самом гаджете выводится "1" (единичка). В чём может быть проблема? Ниже представлены коды xml-, html- и JavaScript-файла. Чтение последнего файла может быть затруднено из-за множества комментариев. Но, скорее всего, проблема не в нём... Возможно, вся проблема заключается в html-файле - там, где написано "onload". Но я без понятий, как это исправить. 3 дня пляшу с бубном, чтоб избавиться от этого, но результат нулевой... gadget.xml <?xml version="1.0" encoding="utf-8" ?> <gadget> <name>USD and EUR rates</name> <namespace>no</namespace> <version>1.0.0.0</version> <author name="Alexander V. Svyatkin"> <info url="facebook.com/alesvyat" /> </author> <copyright>©Alexander V. Svyatkin</copyright> <description>Monitors American Dollar and Euro rates</description> <icons> <icon height="48" width="48" src="" /> </icons> <hosts> <host name="sidebar"> <base type="HTML" apiVersion="1.0.0" src="gadget.html" /> <permissions>full</permissions> <platform minPlatformVersion="1.0" /> <defaultImage src="images/background.png" /> </host> </hosts> </gadget> gadget.html <html> <head> <title>Untitled Page</title> <link href="css/gadget.css" type="text/css" rel="Stylesheet"/> <script src="scripts/gadget.js" type="text/javascript" language="javascript"> </script> </head> <body onload="document.write(getUSDandEUR());"> </body> <div> oops, some problem... </div> </html> gadget.js var currencyURL = "http://www.cbr.ru/scripts/XML_daily_eng.asp"; var localURL = "XML_daily_eng.asp.xml"; function getXMLDocument(url) { var xml; if(window.XMLHttpRequest) { xml = new window.XMLHttpRequest(); xml.open("GET", url, false); xml.send(""); return xml.responseXML; } else if(window.ActiveXObject) { xml = new ActiveXObject("Microsoft.XMLDOM"); xml.async=false; xml.load(url); return xml; } else { alert("Browser error"); return null; } } function getCurrency(url, valuteID) { //document.writeln(url); var xml=null; try { xml = new window.getXMLDocument(url); if(!xml) return //document.writeln("<font color='red'>Нет данных</font>"); } catch(e) {return "<font color='red'>"+e.message+"</font>";} //document.writeln("xml document is: " + xml); var currencies = xml.getElementsByTagName("Valute"); //document.writeln("trololo"); //document.writeln("XML is created"); //var nominals = xml.getElementsByTagName("Nominal"); //var values = xml.getElementsByTagName("Value"); //document.writeln("before if"); //document.writeln("curencies.length = " + currencies.length); if (currencies) for(var i = 0; i < currencies.length; i++) { var nominals = (currencies[i]).getElementsByTagName("Nominal"); var values = (currencies[i]).getElementsByTagName("Value"); var charCodes = (currencies[i]).getElementsByTagName("CharCode"); var nominal = nominals[0]; var value = values[0]; var charCode = charCodes[0]; //document.writeln("nominals = " + nominal.text); //document.writeln("values = " + value.text); var IDs = currencies[i].getElementsByTagName("ID"); var id = null; bool = new Boolean(false); for (var j = 0; j < currencies[i].attributes.length; j++) { var attr = currencies[i].attributes[j]; if (attr.name == "ID") { //document.writeln("id is true "); id = attr.value; //document.writeln("id is " + id); bool = true; } if (bool) break; } bool = false; //ololo /* var id = new Object(); //document.writeln("after var id..."); if (currencies[i].attributes) { for (var j = 0; j < currencies[i].attributes.length; j++) { var attr = currencies[i].attributes[j]; id[attr.name] = attr.value; } }*/ if (id == valuteID) { var output = new String (nominal.text + " " + charCode.text + " = " + value.text + " RUB"); //document.writeln("nominal = " + nominal.text); //document.writeln("value = " + value.text); //document.writeln(output); //document.writeln ("smth") return output; } } } function getUSD() {return getCurrency(currencyURL, "R01235");} function getEUR() {return getCurrency(currencyURL, "R01239");} function getUSDandEUR() {return (getUSD() + " and " + getEUR());} |
Проблема решена
Народ, всё в порядке! Проблема решена, всё теперь корректно))
|
Часовой пояс GMT +3, время: 00:59. |