Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.02.2017, 09:50
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Detect "allow-top-navigation" in iframe
Доброго времени суток, коллеги!

Есть у кого-нибудь идеи, как можно определить внутри iframe, что ему разрешено менять top.location? Т.е. либо не выставлен вообще sandbox, либо выставлен с "allow-top-navigation".

"allow-scripts" легко детектится с помощью document.domain. А вот с "allow-top-navigation" появились проблемы.

Конечно же, на ум сразу пришла такая идея:

try {
    window.top.location.href = 'http://google.ru';
}
catch(e) {
    console.log(false);
}


Но в этом случае, при "allow-top-navigation" будет происходить редирект. Мне же нужно просто узнать, можно ли сделать редирект в top, и в зависимости от этого отправить нужный параметр аяксом на сервер.

Ещё была идея:

try {
    window.top.location.hash = Math.random().toString(16);
}
catch(e) {
    console.log(false);
}


Но родителю, в лучшем случае, можно менять только href (или весь location целиком).

Буду благодарен за советы.

Последний раз редактировалось ruslan_mart, 24.02.2017 в 09:54.
Ответить с цитированием
  #2 (permalink)  
Старый 24.02.2017, 11:52
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Ни у кого нет каких-нибудь идей?
Ответить с цитированием
  #3 (permalink)  
Старый 24.02.2017, 13:42
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Rise, понятное дело. Тут именно идёт речь о наличии такого параметра в sandbox, ведь sandbox может вообще не стоять и скрипты при этом также будут работать.

Теперь появилась необходимость определить наличие параметра "allow-top-navigation" в sandbox, какими-нибудь хитрыми способами.
Ответить с цитированием
  #4 (permalink)  
Старый 24.02.2017, 14:13
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Rise, детектится.

При sandbox="allow-scripts", document.domain выдаст пустую строку. Без sandbox выдаёт родительский домен.

function isSandboxed() {
	var frame;

	if(window !== window.parent) {
		try {
			frame = window.frameElement;
		}
		catch(e) {
			frame = null;
		}

		if(frame === null) {
			if(document.domain === '' && window.location.protocol !== 'data:') {
				return true;
			}
		}
	}

	return !!frame && frame.hasAttribute('sandbox');
}
Ответить с цитированием
  #5 (permalink)  
Старый 24.02.2017, 14:32
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Rise, ой, не то написал, всё верно. Имел ввиду, что document.domain без sandbox выдаст домен фрейма, а с sandbox - пустую строку.
Ответить с цитированием
  #6 (permalink)  
Старый 24.02.2017, 17:28
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Видимо, мой вопрос всё-таки не решим, как я и предполагал.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Увеличение изображения Дмитрий-Шмитрий Элементы интерфейса 0 31.01.2016 13:29
Увеличение изображения Дмитрий-Шмитрий Элементы интерфейса 0 31.01.2016 13:29
Плавающее меню внутри iframe _Alex9_ Общие вопросы Javascript 2 22.11.2015 11:14
Зависание кнопок меню при быстром переключении (onMouseOver) Kapitan79 Элементы интерфейса 3 06.11.2013 18:18
Каруселька в форме буквы Maximor17 Элементы интерфейса 0 24.05.2011 11:36