PDA

Показать полную графическую версию : [решено] Помогите с выводом информации в Windows sidebar


includer-test
28-05-2013, 09:41
Всем доброго времени суток.
Возникла такая проблема в написании гаджета под Win 7, парсю страницу XML, которая лежит локально в папке с гаджетом:

<?xml version="1.0" encoding="utf-8"?>
<MMWEATHER>
<REPORT type="frc3">
<TOWN index="34929" sname="%CA%F0%E0%F1%ED%EE%E4%E0%F0" latitude="45" longitude="38">
<FORECAST day="24" month="05" year="2013" hour="04" tod="0" predict="0" weekday="6">
<PHENOMENA cloudiness="0" precipitation="10" rpower="0" spower="0"/>
<PRESSURE max="756" min="754"/>
<TEMPERATURE max="20" min="18"/>
<WIND min="1" max="3" direction="3"/>
<RELWET max="72" min="70"/>
<HEAT min="18" max="20"/>
</FORECAST>
<FORECAST day="24" month="05" year="2013" hour="10" tod="1" predict="0" weekday="6">
<PHENOMENA cloudiness="0" precipitation="10" rpower="0" spower="0"/>
<PRESSURE max="756" min="754"/>
<TEMPERATURE max="28" min="26"/>
<WIND min="2" max="4" direction="2"/>
<RELWET max="58" min="56"/>
<HEAT min="25" max="27"/>
</FORECAST>
<FORECAST day="24" month="05" year="2013" hour="16" tod="2" predict="0" weekday="6">
<PHENOMENA cloudiness="0" precipitation="10" rpower="0" spower="0"/>
<PRESSURE max="753" min="751"/>
<TEMPERATURE max="37" min="35"/>
<WIND min="2" max="4" direction="4"/>
<RELWET max="29" min="27"/>
<HEAT min="32" max="34"/>
</FORECAST>
<FORECAST day="24" month="05" year="2013" hour="22" tod="3" predict="0" weekday="6">
<PHENOMENA cloudiness="2" precipitation="10" rpower="0" spower="0"/>
<PRESSURE max="755" min="753"/>
<TEMPERATURE max="27" min="25"/>
<WIND min="4" max="6" direction="4"/>
<RELWET max="57" min="55"/>
<HEAT min="24" max="26"/>
</FORECAST>
</TOWN>
</REPORT>
</MMWEATHER>


Выдергиваю с него информацию через jQuery:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Пример парсинга погоды</title>
<script type="text/javascript" src="jquery.js"></script>
<style>
body {width: 300px;height: 300px; }
</style>

<script language=javascript>
$(document).ready(function () {
$.ajax({
type: "GET",
url: "weather.xml",
dataType: "xml",
success: xmlParser
});
});

function xmlParser(xml) {
////////////////////////////////////////////////// Читаем аттрибуты TOWN для этого ищем REPORT (вышестоящий)
/* $(xml).find("REPORT").each(function () {

$(".main").append( 'Krasnodar-----'//вывод в блок с классом main (см.ниже)

+ $(this).find("TOWN").attr('sname') +'-'+ $(this).find("TOWN").attr('latitude') +'-'+ $(this).find("TOWN").attr('longitude')+ '<br>'

);

});
*/
////////////////////////////////////////////////// Читаем аттрибуты FORECAST для этого ищем TOWN (вышестоящий)
$(xml).find("TOWN").each(function () {

$(".main").append( 'Krasnodar' +'<br>'+'Date: '+//вывод в блок с классом main (см.ниже)

+ $(this).find("FORECAST").attr('day') +'-'+ $(this).find("FORECAST").attr('month') +'-'+ $(this).find("FORECAST").attr('year') +'<br>'+'-------------'+'<br>'

);

});
////////////////////////////////////////////////// Читаем аттрибуты TEMPERATURE для этого ищем FORECAST (вышестоящий)
$(xml).find("FORECAST").each(function () {

$(".main").append( 'Temperature' +'<br>'+'max: '+//вывод в блок с классом main (см.ниже)

+ $(this).find("TEMPERATURE").attr('max') +'<br>'+ 'min:'+$(this).find("TEMPERATURE").attr('min') +'<br><br>'

);

});
}
</script>
</head>
<body>
TEST
<div class="main"></div>
</body>
</html>



Затем вывожу все это в блок DIV класса main.

Проблема заключается в том, что при выводе информации в браузере все отлично работает, парсится и выводится.
При выводе в гаджете не отображается информация парсинга, DIV не отображается. Что не так делаю? Возможны ли проблемы с ActiveX? Но насколько мне известно, гаджеты исполняются локально, поэтому должно быть все открыто. Кто подскажет, почему информация не выводится в блоке DIV ?

mrcnn
28-05-2013, 14:48
Нет прав доступа на доступ к xml файлу.

includer-test
28-05-2013, 20:44
Нет, на файл стоит полный доступ всем пользователям, если Вы об этом.
Предполагаю, что надо копать в сторону ActiveX, кто знает как обойти его, чтобы он исполнялся.
При запуске в IE появляется сообщение:
"IE запретил выполнение сценариев и элементов ActiveX на этой странице"

Если нажать кнопку "Разрешить заблокированное содержимое", то все нормально отрабатывает. Но неужели IE связан с Windows sidebar ?

Iska
29-05-2013, 04:08
IE связан со всем ;). Код-то кто исполняет, как думаете?

includer-test
29-05-2013, 07:35
Цитировать »

Да, согласен с Вами, в этом есть логика. Но опытным путем проверено, подобного рода скрипты отрабатывают без проблем. Т.е. в IE выскакивает предупреждение, в гаджете все работает.

Если уж это IE, есть идеи как обойти это?

includer-test
29-05-2013, 12:33
В общем, кому интересно, то я использовал .hta для отображения гаджета, вместо .html, все работает.

Iska
29-05-2013, 16:22
Т.е., сменили обработчик с «iexplore.exe» на «mshta.exe». Хоть внутре у них неонка внутри оба используют IE, для «mshta.exe» ограничений меньше.

includer-test
29-05-2013, 21:22
В файле ничего не менял, сменил его расширение с html на hta. Если запустить этот hta то все сразу работает, также как и в браузере( не IE, т.к. он спрашивает запускать или нет активное содержимое). Соответственно в манифесте гаджета сменил главный файл на gadget.hta.

Iska
29-05-2013, 21:39
сменил его расширение с html на hta »
Т.е., сменили обработчик с «iexplore.exe» на «mshta.exe». »

includer-test
29-05-2013, 21:49
Дело в том, я не знаю чем обрабатываются гаджеты в windows, каким обработчиком. Конечно я понимаю, что по логике вещей гаджет это обычный html и бла-бла-бла, но я не уверен, что он обрабатывается именно IE.
Про hta файлы я знал, про mshta.exe тем более, спасибо почитал. Но то что эти hta как я понимаю что-то вроде скомпилированного html я не знал.

Iska
29-05-2013, 22:21
Дело в том, я не знаю чем обрабатываются гаджеты в windows, каким обработчиком. »
А у меня этой версии Windows вообще нет ;).

Но то что эти hta как я понимаю что-то вроде скомпилированного html я не знал. »
Это обычный html плюс специфичный заголовок и свой обработчик. Ничего компилированного там нет.




© OSzone.net 2001-2012