Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обработка url внутри фрейма (https://javascript.ru/forum/misc/50411-obrabotka-url-vnutri-frejjma.html)

solohub 25.09.2014 12:38

Обработка 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.

skrudjmakdak 25.09.2014 12:52

как вариант можно так:
- повесить событие 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');
}

solohub 25.09.2014 12:57

Спасибо за ответ, а если на странице используется несколько фреймов, и для одних нужно добавлять &tmpl=component а для некоторых нет

solohub 25.09.2014 13:08

Цитата:

Сообщение от skrudjmakdak (Сообщение 332207)
как вариант можно так:
- повесить событие 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');
}

событие повесил, скрипт добавил, но не работает.

solohub 25.09.2014 13:34

Задам другой вопрос у каждого фрейма изначально указан url с параметром tmpl=component, он означает что загружается не index.php а component.php может в этом файле разместить скрипт который каждой ссылке будет подставлять &tmpl=component? скажите как это реализовать.

solohub 25.09.2014 15:11

Работает только если вместо селектора использовать тег
var a = document.getElementsByTagName('a');
, вопрос стал в другом как сделать что бы к ссылкам с GET параметрами добавлялось &tmpl=componet а к ссылкам без GET просто ?tmpl=component

skrudjmakdak 25.09.2014 16:10

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>

solohub 25.09.2014 16:38

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


Часовой пояс GMT +3, время: 08:02.