Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.09.2014, 12:38
Новичок на форуме
Отправить личное сообщение для solohub Посмотреть профиль Найти все сообщения от solohub
 
Регистрация: 25.09.2014
Сообщений: 9

Обработка url внутри фрейма
Доброго времени суток.
Уже замучился искать решение.
имеем фрейм:
<iframe name="myuslug" src="index.php?option=com_component&tmpl=component" class="ifmyfiles" width="1150" height="450" align="left">
    Ваш браузер не поддерживает плавающие фреймы!
</iframe>

изначально он загружается без основного шаблона сайта за счет tmpl=componen, так вот как сделать так что бы при переходе по внутренним ссылкам компонента к ним автоматически добавлялось &tmpl=component.
Ответить с цитированием
  #2 (permalink)  
Старый 25.09.2014, 12:52
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

как вариант можно так:
- повесить событие onload
- найти все компоненты <a> (document.querySelector('a')
- пробежать массивом и добавить в свойство вашу строку:
var a = document.querySelector('a');
for (var i = 0, ln = a.length; i < ln; ++i){
  a[i].setAttribute('href', a[i].getAttribute('href') + '&tmpl=component');
}
Ответить с цитированием
  #3 (permalink)  
Старый 25.09.2014, 12:57
Новичок на форуме
Отправить личное сообщение для solohub Посмотреть профиль Найти все сообщения от solohub
 
Регистрация: 25.09.2014
Сообщений: 9

Спасибо за ответ, а если на странице используется несколько фреймов, и для одних нужно добавлять &tmpl=component а для некоторых нет
Ответить с цитированием
  #4 (permalink)  
Старый 25.09.2014, 13:08
Новичок на форуме
Отправить личное сообщение для solohub Посмотреть профиль Найти все сообщения от solohub
 
Регистрация: 25.09.2014
Сообщений: 9

Сообщение от skrudjmakdak Посмотреть сообщение
как вариант можно так:
- повесить событие onload
- найти все компоненты <a> (document.querySelector('a')
- пробежать массивом и добавить в свойство вашу строку:
var a = document.querySelector('a');
for (var i = 0, ln = a.length; i < ln; ++i){
  a[i].setAttribute('href', a[i].getAttribute('href') + '&tmpl=component');
}
событие повесил, скрипт добавил, но не работает.
Ответить с цитированием
  #5 (permalink)  
Старый 25.09.2014, 13:34
Новичок на форуме
Отправить личное сообщение для solohub Посмотреть профиль Найти все сообщения от solohub
 
Регистрация: 25.09.2014
Сообщений: 9

Задам другой вопрос у каждого фрейма изначально указан url с параметром tmpl=component, он означает что загружается не index.php а component.php может в этом файле разместить скрипт который каждой ссылке будет подставлять &tmpl=component? скажите как это реализовать.
Ответить с цитированием
  #6 (permalink)  
Старый 25.09.2014, 15:11
Новичок на форуме
Отправить личное сообщение для solohub Посмотреть профиль Найти все сообщения от solohub
 
Регистрация: 25.09.2014
Сообщений: 9

Работает только если вместо селектора использовать тег
var a = document.getElementsByTagName('a');
, вопрос стал в другом как сделать что бы к ссылкам с GET параметрами добавлялось &tmpl=componet а к ссылкам без GET просто ?tmpl=component
Ответить с цитированием
  #7 (permalink)  
Старый 25.09.2014, 16:10
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

js кода всего на 5 строчек:
это ваш файл фрейм с именем index.html
<html>
	<head> 
		<title>example</title>
	</head>

	<body>
		<a href="/link?param1=123">111</a>
		<a href="/link?param1=123">111</a>
		<a href="/link?param1=123">111</a>
	</body>

</html>

это ваш главный файл (название какое хотите), который вызывает index.html
<html>
	<head> 
		<title>example</title>
		<script>
		function loadFrame(frame){
			Array.prototype.forEach.call(frame.contentWindow.document.querySelectorAll('a'), function (a){
				a.setAttribute('href', a.getAttribute('href') + '&tmpl=component');
			});
		}
		</script>
	</head>

	<body>
		<iframe src="index.html" onload="loadFrame(this);"></iframe>
		<iframe src="index.html" onload="loadFrame(this);"></iframe>
		<iframe src="index.html" onload="loadFrame(this);"></iframe>
	</body>

</html>
Ответить с цитированием
  #8 (permalink)  
Старый 25.09.2014, 16:38
Новичок на форуме
Отправить личное сообщение для solohub Посмотреть профиль Найти все сообщения от solohub
 
Регистрация: 25.09.2014
Сообщений: 9

Спасибо большое за помощь! Все работает.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обработка URL bromel1 Элементы интерфейса 1 13.03.2014 23:50
Переход по истории внутри фрейма g_arden Events/DOM/Window 0 11.08.2012 15:39
Водяной знак на fancybox bobrina Общие вопросы Javascript 1 03.06.2011 21:11
Обработка события элемента внутри создавшего его объекта pauluss Общие вопросы Javascript 10 10.09.2010 17:01
Передать адресную строку внутри Фрейма Smirnov007 Общие вопросы Javascript 1 08.02.2008 15:04