Вход

Просмотр полной версии : Обработка url внутри фрейма


solohub
25.09.2014, 12:38
Доброго времени суток.
Уже замучился искать решение.
имеем фрейм:
<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
как вариант можно так:
- повесить событие 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.d ocument.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
Спасибо большое за помощь! Все работает.