Просмотр полной версии : Как получить доступ к DOM броузера?
Нужно из флешки прочитать например document.URL, т.е. URL html-файла в который внедрен флеш-ролик.
Поиск курил. Проблема в том, что внешнего JavaScript кода на странице нет.
Пробовал так:
import flash.external.ExternalInterface;
var from_js = ExternalInterface.call("return(document.URL)");
возвращается null
random13
19.06.2009, 17:33
а неужели создав функцию на странице и вызвав ее через кол нельзя вернуть урл?
Я не могу ничего создать на странице, страница "чужая". Ну например как в случае flash-баннера, который вставлен в произвольные, "чужие" страницы.
ExternalInterface.call('return document.location.href');
Только если allowScriptAccess указан как always.
Только если allowScriptAccess указан как always.
Или указан как "sameDomain", либо не указан вовсе (по умолчанию = "sameDomain"), а флешка грузится с того же домена, откуда было загружено грузящее флешку приложение (страница). :wacko:
Попробовал - возвращает null
import flash.external.ExternalInterface;
_root.varout.text = ExternalInterface.call("return document.location.href");
BlooDHounD
19.06.2009, 20:47
ExternalInterface.call('function() { try { return document.location.href; } catch ( e ) {} }()');
Если политикой безопасности не разрешен доступ к хостер-приложению, то при попытке к нему обратиться случится эксепшен. Лучше обернуть сам запрос в try-catch. Ну это так, к слову.
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 :)
у меня в коде ошибка кстати. последние скобки в строке не нужны.
ExternalInterface.available тоже вызовет эксепшен.
BlooDHounD
22.06.2009, 14:28
жесть :) адобовцы не перестают удивлять своим идиотизмом.
так-с. поправочка.
Тестировалось при allowScriptAccess="never"
if (ExternalInterface.available) {
ExternalInterface.call("function(){return document;}");
}
ExternalInterface.available дает правду и последующий call приводит к security error.
Так что любой вызов ExternalInterface.call лучше обернуть в try-catch потому как ExternalInterface.available не всегда прав.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.