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

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

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

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
По умолчанию navigateToURL в новой вкладке

Код AS3:
var request:URLRequest = new URLRequest();
request.url = Common.HomeDir + "vssscr.php";
request.method = URLRequestMethod.POST;
var variables:URLVariables = new URLVariables();
request.data = variables;
if (SId != null && SId.SessionId != "0") request.data["session_id"] = SId.SessionId;
navigateToURL(request, "_blank");
В IE и Firefox этот код открывает окно в новой вкладке, а в Opera и Chrome - в новом окне. Как можно сделать для хрома и оперы, чтобы тоже открывалось во вкладке а не в новом окне?
__________________
interplanety

Старый 19.06.2014, 00:18
nubideus вне форума Посмотреть профиль Отправить личное сообщение для nubideus Найти все сообщения от nubideus
  № 2  
Ответить с цитированием
nubideus

Регистрация: Jan 2013
Сообщений: 322
Цитата:
Код AS3:
navigateToURL(request, "_blank");
Цитата:
"_self" указывает текущий фрейм в текущем окне.
"_blank" определяет новое окно.
"_parent" указывает родительский объект текущего фрейма.
"_top" указывает фрейм самого верхнего уровня в текущем окне.
оно вроде бы по умолчанию открывало в новой вкладке, попробуй просто navigateToURL(request)

Старый 19.06.2014, 00:21
Korchy вне форума Посмотреть профиль Отправить личное сообщение для Korchy Найти все сообщения от Korchy
  № 3  
Ответить с цитированием
Korchy
 
Аватар для Korchy

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
Цитата:
Сообщение от nubideus Посмотреть сообщение
попробуй просто navigateToURL(request)
Тоже самое, в хроме - в новом окне открывается а не во вкладке.
__________________
interplanety

Старый 19.06.2014, 02:06
nubideus вне форума Посмотреть профиль Отправить личное сообщение для nubideus Найти все сообщения от nubideus
  № 4  
Ответить с цитированием
nubideus

Регистрация: Jan 2013
Сообщений: 322
Korchy, в хроме будет открываться если вторым аргументом будет любая лабуда. если запускается локально, то какая именно лабуда - не важно, потому что:
Цитата:
Когда код в SWF-файле, запущенном в локальной изолированной программной среде для файловой системы, вызывает функцию navigateToURL() и указывает специальное имя окна для параметра window, имя окна преобразуется в случайное имя. Имя представлено в формате _flashXXXXXXXX, где каждый X представляет случайную шестнадцатеричную цифру. Если в рамках одного сеанса (до закрытия используемого окна браузера) вы снова вызовете эту функцию и определите то же самое имя для параметра window, будет использована та же случайно выбранная строка.
если флешка на сайте, то в теории возможна коллизия, и вкладка откроется не там, где надо.
Код AS3:
navigateToURL(new URLRequest("http://somesite"), "asdasd");
сори, в других браузерах нет возможности тестить.

Старый 19.06.2014, 09:17
Korchy вне форума Посмотреть профиль Отправить личное сообщение для Korchy Найти все сообщения от Korchy
  № 5  
Ответить с цитированием
Korchy
 
Аватар для Korchy

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
nubideus

Без разницы, на локальном компьютере или когда выкладываю на сайт - одинаково. Хром открывает новое окно, а не вкладку.

Добавлено через 3 часа 9 минут
Попробовал через ExternalInterface вызвать - открывает в хроме в новой вкладке, как и должно быть. Странно.

Код AS3:
ExternalInterface.call("window.open", "vssscr.php", "_blank");
__________________
interplanety


Последний раз редактировалось Korchy; 19.06.2014 в 12:28.
Старый 19.06.2014, 16:54
nubideus вне форума Посмотреть профиль Отправить личное сообщение для nubideus Найти все сообщения от nubideus
  № 6  
Ответить с цитированием
nubideus

Регистрация: Jan 2013
Сообщений: 322
Цитата:
ExternalInterface.call("window.open", "vssscr.php", "_blank");
Цитата:
открывает в хроме в новой вкладке
странный хром, ему говорят открыть окно, а он вкладку открывает

Старый 19.06.2014, 17:29
Korchy вне форума Посмотреть профиль Отправить личное сообщение для Korchy Найти все сообщения от Korchy
  № 7  
Ответить с цитированием
Korchy
 
Аватар для Korchy

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
Цитата:
Сообщение от nubideus Посмотреть сообщение
странный хром, ему говорят открыть окно, а он вкладку открывает
Как раз это нормально. С момента появления вкладок в браузерах _blank открывает новую вкладку а не окно. Попробуйте для эксперимента простою хтмл-ку выполнить с

Код:
<a href="page.html" target="_blank">GoToPage</a>
страница page.html откроется в новой вкладке а не окне.
Вот и от NavigateToURL я такого же поведения ожидал, а в хроме и опере почему-то окно Может быть это как-то с механизмом блокировки всплывающих окон связано, но пока решение только через ExternalInterface работает у меня правильно.
__________________
interplanety

Старый 26.06.2014, 14:29
Korchy вне форума Посмотреть профиль Отправить личное сообщение для Korchy Найти все сообщения от Korchy
  № 8  
Ответить с цитированием
Korchy
 
Аватар для Korchy

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
В ходе экспериментов сделал такой класс. В Chrome, IE и Firefox открывается в новой вкладке. С Оперой решения так и не нашел, она все время открывает новое окно Пробовал варианты с вызовом javascript-функции, в которой уже вызывал window.open и вариант, где в js-функции открывал новую вкладку через submit для формы с target=_blank : ничего не срабатывает. Если вызываю эту javascript функцию из html-страницы - опера открывает в новой вкладке, если через ExternalInterface - опера лупит новое окно

Код AS3:
 
package Nn.System 
{
//-----------------------------------------------------------------------------------------------------
	import flash.external.ExternalInterface;
	import flash.net.navigateToURL;
	import flash.net.URLRequest;
	import flash.net.URLRequestMethod;
	import flash.net.URLVariables;
//-----------------------------------------------------------------------------------------------------
	public class ExternalTab {
		// Виды браузеров
		public static const BROWSER_UNAVAILABLE:uint = 0;
		public static const BROWSER_OTHER:uint = 1;
		public static const BROWSER_IE:uint = 2;
		public static const BROWSER_CHROME:uint = 3;
		public static const BROWSER_FIREFOX:uint = 4;
		public static const BROWSER_OPERA:uint = 5;
//-----------------------------------------------------------------------------------------------------
		public function ExternalTab() {
 
		}
//-----------------------------------------------------------------------------------------------------
		public function OpenNewTab(Script:String):Boolean {
			// Открытие новой вкладки и выполнение в ней скрипта Script
			if (ExternalInterface.available) {
				switch (BrowserName()) {
					case BROWSER_IE:
						// Для IE - через navigateToURL
						CallNavigateToUrl(Script);
						break;
					case BROWSER_OPERA:
						// Для OPERA - через navigateToURL
						CallNavigateToUrl(Script);
						break;
					default:
						// Для остальных - через ExternalInterface
						CallExternalInterface(Script);
						break;
				}
				return true;
			}
			return false;
		}
//-----------------------------------------------------------------------------------------------------
		public function BrowserName():uint {
			// Возвращает браузер пользователя
			if (ExternalInterface.available) {
				var Rez:String = (ExternalInterface.call("function (){return navigator.userAgent;}")).toUpperCase();
				if (Rez != null && Rez.indexOf("MSIE")>=0) return BROWSER_IE;
				else if (Rez != null && Rez.indexOf("CHROME") >= 0) {
						if(Rez.indexOf("OPR/")>=0) return BROWSER_OPERA;
						else return BROWSER_CHROME;
					}
				else if (Rez != null && Rez.indexOf("FIREFOX")>=0) return BROWSER_FIREFOX;
				else if (Rez != null && Rez.indexOf("OPERA")>=0) return BROWSER_OPERA;
				else return BROWSER_OTHER;
			}
			else return BROWSER_UNAVAILABLE;
		}
//-----------------------------------------------------------------------------------------------------
		private function CallNavigateToUrl(Script:String):void {
			// Вызов через NavigateToURL
			var Request:URLRequest = new URLRequest();
			Request.url = Script;
			Request.method = URLRequestMethod.POST;
			var Variables:URLVariables = new URLVariables();
			Request.data = Variables;
			navigateToURL(Request, "_blank");
		}
//-----------------------------------------------------------------------------------------------------
		private function CallExternalInterface(Script:String):void {
			// Вызов через ExternalInterface
			ExternalInterface.call("window.open", Script, "_blank");
		}
	}
}
__________________
interplanety

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

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

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


 


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


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