Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   FLASH поисковик (http://www.flasher.ru/forum/showthread.php?t=120930)

DarkLight 04.02.2009 16:01

Цитата:

2) XML можно прочитать только ту часть, которую флеш считает xml-ем
Вместо onLoad используйте onData, и сможете прочитать все

gloomyBrain 04.02.2009 16:59

а разве onData вызывается по окончании загрузки? ну, то есть если сделать проверку на число загруженных байт, тогда да

qazwsx 04.02.2009 17:03

Код AS1/AS2:

onData = function(src:String) {}

Invoked when data has completely downloaded from the server or when an error occurs while data is downloading from a server.

Из хелпа

DrSmyrke 04.02.2009 18:05

Цитата:

Сообщение от gloomyBrain (Сообщение 795555)
Вот что накидал по-быстрому
Код AS1/AS2:

var lv:LoadVars= new LoadVars();
lv.onLoad=function(success:Boolean){
        if(success){
                trace("Здесь будет отображение в виде LoadVars")
                trace(unescape(String(this)))
                trace("\n\n")
        }else{
                trace("error loading string")
        }
}
lv.load("http://google.ru")
//
// тоже самое с xml
//
var xm:XML=new XML()
xm.ignoreWhite=true
xm.onLoad = function(success:Boolean){
        if(success){
                trace(this)
        }else{
                trace("error loading xml")
        }
}
xm.load("http://google.ru")

Однако, заметил, что
1) LoadVars грузит не все, а только некоторый объем(видимо есть макс. предел)
2) XML можно прочитать только ту часть, которую флеш считает xml-ем

Как загружать я понял, искать между тегами как будет?

gloomyBrain 04.02.2009 18:46

Цитата:

Из хелпа
...да
Дыра в памяти =), почему-то считал, что это событие сродни onProgress и тп
кстати, тоже из хелпа, потому и О_о:
Цитата:

Whenever you receive data from the server, the data event (flash.events.DataEvent.DATA) is dispatched
В любом случае, тот же гугл возвращается не полностью (я имею ввиду что скрипты грузятся только через LoadVars - это по факту работы загрузки - а вот само тело страницы возвращается корректно только через xml)

Исходя из того, что имеем и того, что сказал DarkLight, я бы сделал так:
1) преобразовал загруженный xml (по событию onData) в строку
2) для этой строки использовал бы indexOf для нахождения интересующего нас участка (его начала и конца)
3) ну а соль-перец по вкусу, далее делаем чего хотели с самого начала

qazwsx 05.02.2009 11:35

Зачем вообще было чтото писать после моего примера?.

P.S LoadVars.load использую загружается полностью все никаких XML не надо
P.P.S Собитию onData передается a:Object не строка и не XML :)
P.P.P.S LoadVars.load, sendAndLoad, XML.load, sendAndLoad выдают 1 и тотже результат по оканчанию загрузки

Vasyaga 05.02.2009 13:55

И еще маленькое замечание - строка:
Код AS1/AS2:

lv.load('http://google.ru');

В браузере работать будет только в случае если в корне домена 'http://google.ru' (и любого другого, с которого Вы загружаете данные лежит файлик 'crossdomain.xml' c разрешением доступа от вашего домена (yourdomain.ru), где лежит флэшка:
Код:

<allow-access-from domain="yourdomain.ru" />
В большинстве случаев это будет недостижимо.
Есть еще один способ загрузки данных из другого домена - использовать прокси на вашем сервере, который будет забирать запросы от flash и перенаправлять их по нужному URL.

gloomyBrain 05.02.2009 15:13

Цитата:

Зачем вообще было чтото писать после моего примера?
qazws, действительно, зачем? Ведь следующее что написано после вашего примера это:
Цитата:

Как загружать я понял, искать между тегами как будет?
Цитата:

LoadVars.load, sendAndLoad, XML.load, sendAndLoad выдают 1 и тотже результат по оканчанию загрузки
У меня XML.load давал НЕ то же самое, что и LoadVars.load
2 Vasyaga
Самое удивительное, что работает без crossdomain.xml
проверял через сайт (у них этого файла и в помине нет =))

Vasyaga 05.02.2009 15:24

Цитата:

Сообщение от gloomyBrain (Сообщение 795789)
2 Vasyaga
Самое удивительное, что работает без crossdomain.xml
проверял через сайт (у них этого файла и в помине нет =))

Такого файла нет, но по запросу http://florall.ru/crossdomain.xml он не выдаёт ошибку 404, а возвращает главную страницу сайта! Видимо парсер crossdomain.xml воспринимает ее как разрешающую доступ (может символ '*' видит ?).

Вам в любом случае придется создавать какой-то back-end на сервере хотя бы для проксирования запросов. Не говоря уже о кешировании. Да и синтакс-анализ лучше делать средствами сервера, а не во флэш, и передавать во флэш данные в удобоваримом формате.

qazwsx 05.02.2009 16:00

Цитата:

Сообщение от gloomyBrain (Сообщение 795789)
qazws, действительно, зачем? Ведь следующее что написано после вашего примера это:



У меня XML.load давал НЕ то же самое, что и LoadVars.load
2 Vasyaga
Самое удивительное, что работает без crossdomain.xml
проверял через сайт (у них этого файла и в помине нет =))

Вообщето это было написанно с коментарием твоего кода). Да и кроме того ответ на вопрос был дан, а он уже может дальше разбиратся с кодом сам, модифицировать его изменять и тд.

P.S Самое удивителньое что вы во Flash IDE проверяли? :) если да то плеер во Flash IDE Запускается как "доверенный" и может получить доступ к чему угодно(в сети).


Часовой пояс GMT +4, время: 22:12.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.