Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 05.09.2013, 19:36
prrt вне форума Посмотреть профиль Отправить личное сообщение для prrt Найти все сообщения от prrt
  № 1  
Ответить с цитированием
prrt

Регистрация: Jun 2012
Сообщений: 47
По умолчанию Получить url страницы в флеш плеере в IE

Подскажите, как получить url текущей страницы в IE?
Я использовал в флеш плеере такой код:
Код AS3:
if (ExternalInterface.available) {
    var url:String = ExternalInterface.call("window.location.href.toString");
    var newUrl:String = url.replace("-", "_");
}
Этот код отлично работает в Chrome, но в IE10 выдаёт ошибку:
TypeError - Error #1009: Cannot access a property or method of a null object reference.

Если же вместо строки
var url:String = ExternalInterface.call("window.location.href.toString");
указать
var url:String = "aaaaa";
то ошибки уже не возникает. Т.е. проблема именно в получении url.
Пробовал window.location.href.toString менять на document.location.href.toString - не помогает. Также пробовал прописать в самом начале страницы javascript функцию:
function reportHref(){
return window.location.href.toString();
}
а в коде плеера прописать
Код AS3:
var url:String = ExternalInterface.call("reportHref");
- тоже не помогает, та же ошибка.

В чем тут может быть дело?

Добавлено через 37 минут
Да, еще такой момент. Локально работает и в IE, т.е. если адрес страницы вида
file:///D:/some_page.html , то ошибки не возникает.


Последний раз редактировалось prrt; 05.09.2013 в 20:08.
Старый 05.09.2013, 22:45
C4Grey вне форума Посмотреть профиль Отправить личное сообщение для C4Grey Найти все сообщения от C4Grey
  № 2  
Ответить с цитированием
C4Grey

Регистрация: May 2007
Сообщений: 181
Отправить сообщение для C4Grey с помощью ICQ Отправить сообщение для C4Grey с помощью Skype™
IE 10 под рукой нет, но стоит попробовать document.URL и просто window.location(оно и так возвратит строку в AS, без вызова метода toString). Кроме того, желательно проверить, работает ли ExternalInterface вообще, вызвав метод с логированием в консоль, или с выводом alert.
P.S. allowScriptAccess выставлен в "always"(ну или 'sameDomain")? А то это похоже на ограничения безопасности локальной песочницы(хотя, если эта же страница работает в Chrome, тогда вряд ли проблема в этом).


Последний раз редактировалось C4Grey; 05.09.2013 в 22:56.
Старый 06.09.2013, 01:00
prrt вне форума Посмотреть профиль Отправить личное сообщение для prrt Найти все сообщения от prrt
  № 3  
Ответить с цитированием
prrt

Регистрация: Jun 2012
Сообщений: 47
Проверил, allowScriptAccess выставлен в "always". Да и если бы было не так, в других браузерах ведь тоже бы не работало. Сделал вывод сообщений с помощью alert, проверил все указанные варианты, нигде в IE10 url адрес не извлекается, т.е. на выходе получаем пустую строку. Тот же самый код работает во всех остальных браузерах отлично, проверил хром, мозилу и оперу - везде получаем корректный адрес текущей страницы.

Причем условие
if (ExternalInterface.available) {
}
в IE10 отрабатывает корректно, если внутри него сделать вывод просто текста, то он отображается. Т.е. внешний интерфейс считается доступным.

Что же это - нерешаемый баг IE10?

Старый 06.09.2013, 01:08
chamele0n вне форума Посмотреть профиль Отправить личное сообщение для chamele0n Посетить домашнюю страницу chamele0n Найти все сообщения от chamele0n
  № 4  
Ответить с цитированием
chamele0n
[+4 24.04.13]
[+4 20.04.13]

Регистрация: Feb 2013
Адрес: Seireitei
Сообщений: 176
а чем вам loaderInfo неугодил ?
Код AS3:
import flash.text.TextField;
 
var tf:TextField = new TextField();
tf.text = stage.loaderInfo.url;
tf.width = stage.stageWidth;
addChild(tf);
__________________
Personal Page
$demo = $away3d + $bullet + $pathfinding;

Старый 06.09.2013, 01:19
prrt вне форума Посмотреть профиль Отправить личное сообщение для prrt Найти все сообщения от prrt
  № 5  
Ответить с цитированием
prrt

Регистрация: Jun 2012
Сообщений: 47
loaderinfo отработал корректно, но он возвращает адрес, откуда был загружен сам плеер. А мне нужен адрес html страницы.

Старый 06.09.2013, 02:01
C4Grey вне форума Посмотреть профиль Отправить личное сообщение для C4Grey Найти все сообщения от C4Grey
  № 6  
Ответить с цитированием
C4Grey

Регистрация: May 2007
Сообщений: 181
Отправить сообщение для C4Grey с помощью ICQ Отправить сообщение для C4Grey с помощью Skype™
В IE есть консоль разработчкиа, можно написать чистую html страницу, добавить туда такой скрипт:
Код:
<script>
function getLocation()
{
	return JSON.stringify(location);
}
</script>
И вызвать в консоли фунцию getLocation, она вернет строку со всеми свойствами объекта location, точно так же можно поигратсья с другими способами получения URL. Больше, к сожалению, ничем помочь не могу, у меня только IE 8. Разве что могу посоветовать просто писать в flashvars серверным скриптом нужную информацию при создании страницы страницы с флешкой(как я понимаю, эта страница загружается в iframe на другом сайте).

Старый 06.09.2013, 02:50
viclight вне форума Посмотреть профиль Отправить личное сообщение для viclight Найти все сообщения от viclight
  № 7  
Ответить с цитированием
viclight

Регистрация: Mar 2007
Сообщений: 39
В теге object пропишите атрибут id присвоив ему уникальное значение и атрибут classid="clsid27CDB6E-AE6D-11cf-96B8-444553540000"
У меня заработало

Добавлено через 1 минуту
в моем предидущем сообщении вместо смайлика два символа : D

Старый 06.09.2013, 12:16
prrt вне форума Посмотреть профиль Отправить личное сообщение для prrt Найти все сообщения от prrt
  № 8  
Ответить с цитированием
prrt

Регистрация: Jun 2012
Сообщений: 47
Цитата:
Сообщение от viclight Посмотреть сообщение
В теге object пропишите атрибут id присвоив ему уникальное значение и атрибут classid="clsid27CDB6E-AE6D-11cf-96B8-444553540000"
У меня заработало
У меня в теге object так и было указано:
<object width="496" height="288" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,1,0,0" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">


Цитата:
Сообщение от C4Grey Посмотреть сообщение
Разве что могу посоветовать просто писать в flashvars серверным скриптом нужную информацию при создании страницы страницы с флешкой
А вот это идея! Именно так и сделал, в итоге таким образом и решил проблему. Спасибо!

Старый 06.09.2013, 17:26
C4Grey вне форума Посмотреть профиль Отправить личное сообщение для C4Grey Найти все сообщения от C4Grey
  № 9  
Ответить с цитированием
C4Grey

Регистрация: May 2007
Сообщений: 181
Отправить сообщение для C4Grey с помощью ICQ Отправить сообщение для C4Grey с помощью Skype™
Судя по постам на StackOverflow, в IE10 проблема проявляется часто, так что решение вполне приемлимое, да и точно кроссбраузерное.

Создать новую тему Ответ Часовой пояс GMT +4, время: 16:34.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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