Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как получить доступ к DOM броузера? (http://www.flasher.ru/forum/showthread.php?t=126462)

Milagro 19.06.2009 17:08

Как получить доступ к DOM броузера?
 
Нужно из флешки прочитать например document.URL, т.е. URL html-файла в который внедрен флеш-ролик.

Поиск курил. Проблема в том, что внешнего JavaScript кода на странице нет.

Пробовал так:
Код AS1/AS2:

import flash.external.ExternalInterface;
var from_js = ExternalInterface.call("return(document.URL)");

возвращается null

random13 19.06.2009 17:33

а неужели создав функцию на странице и вызвав ее через кол нельзя вернуть урл?

Milagro 19.06.2009 18:01

Я не могу ничего создать на странице, страница "чужая". Ну например как в случае flash-баннера, который вставлен в произвольные, "чужие" страницы.

etc 19.06.2009 18:54

Код AS1/AS2:

ExternalInterface.call('return document.location.href');

Только если allowScriptAccess указан как always.

dimarik 19.06.2009 19:25

Цитата:

Сообщение от __etc (Сообщение 829356)
Только если allowScriptAccess указан как always.

Или указан как "sameDomain", либо не указан вовсе (по умолчанию = "sameDomain"), а флешка грузится с того же домена, откуда было загружено грузящее флешку приложение (страница). :wacko:

Milagro 19.06.2009 19:34

Попробовал - возвращает null

Код AS1/AS2:

import flash.external.ExternalInterface;
_root.varout.text = ExternalInterface.call("return document.location.href");


BlooDHounD 19.06.2009 20:47

Код AS3:

ExternalInterface.call('function() { try { return document.location.href; } catch ( e ) {} }()');


dimarik 22.06.2009 11:49

Если политикой безопасности не разрешен доступ к хостер-приложению, то при попытке к нему обратиться случится эксепшен. Лучше обернуть сам запрос в try-catch. Ну это так, к слову.

Код AS3:

try {
        ExternalInterface.call('function() { try { return document.location.href; } catch ( e ) {} }()');
} catch (error:Error) {
        trace('Ooops!');
}


BlooDHounD 22.06.2009 12:16

dimarik, лучше поставить проверку на ExternalInterface.available :)

у меня в коде ошибка кстати. последние скобки в строке не нужны.

dimarik 22.06.2009 12:31

ExternalInterface.available тоже вызовет эксепшен.


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

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