Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Помогите с выводом информации в Windows sidebar (http://forum.oszone.net/showthread.php?t=261358)

includer-test 28-05-2013 09:41 2157527

Помогите с выводом информации в Windows sidebar
 
Всем доброго времени суток.
Возникла такая проблема в написании гаджета под Win 7, парсю страницу XML, которая лежит локально в папке с гаджетом:
HTML код:

<?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 код:

<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 2157765

Нет прав доступа на доступ к xml файлу.

includer-test 28-05-2013 20:44 2158038

Вложений: 1
Нет, на файл стоит полный доступ всем пользователям, если Вы об этом.
Предполагаю, что надо копать в сторону ActiveX, кто знает как обойти его, чтобы он исполнялся.
При запуске в IE появляется сообщение:
"IE запретил выполнение сценариев и элементов ActiveX на этой странице"

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

Iska 29-05-2013 04:08 2158189

IE связан со всем ;). Код-то кто исполняет, как думаете?

includer-test 29-05-2013 07:35 2158222

Цитата:

Цитата Iska
Цитировать »

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

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

includer-test 29-05-2013 12:33 2158375

В общем, кому интересно, то я использовал .hta для отображения гаджета, вместо .html, все работает.

Iska 29-05-2013 16:22 2158534

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

includer-test 29-05-2013 21:22 2158806

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

Iska 29-05-2013 21:39 2158815

Цитата:

Цитата includer-test
сменил его расширение с html на hta »

Цитата:

Цитата Iska
Т.е., сменили обработчик с «iexplore.exe» на «mshta.exe». »


includer-test 29-05-2013 21:49 2158820

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

Iska 29-05-2013 22:21 2158851

Цитата:

Цитата includer-test
Дело в том, я не знаю чем обрабатываются гаджеты в windows, каким обработчиком. »

А у меня этой версии Windows вообще нет ;).

Цитата:

Цитата includer-test
Но то что эти hta как я понимаю что-то вроде скомпилированного html я не знал. »

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


Время: 10:12.

Время: 10:12.
© OSzone.net 2001-