Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   userscripts "История фрейма" (https://javascript.ru/forum/css-html-internet-explorer/50861-userscripts-istoriya-frejjma.html)

AlexVong 14.10.2014 20:57

userscripts "История фрейма"
 
Добрый вечер!
Возможно ли в userscripts реализовать мониторинг ифрейма на определенном сайте, а именно сохранять в log файл адреса ифрейма при каждом его обновлении или через определенный промежуток времени?
:cray:

danik.js 14.10.2014 21:04

А ты попробуй.

AlexVong 14.10.2014 21:11

danik.js,
пжлста можно примерчик, userscripts еще только пытаюсь осваивать ...

danik.js 14.10.2014 21:18

А ты пока просто скрипт сделай. Не "user"

AlexVong 14.10.2014 21:35

danik.js,
Пойду учить мат.часть...:write: т.к просто скрипты тоже только осваиваю... :cray:

AlexVong 15.10.2014 20:43

Прошу помощи ... получилось получать текущий адрес ифрейма и записывать его в массив, скрипт работает постоянно в цикле и проверяет идентичность текущего адреса ифрейма и последней строки массива, и если они не равны - записывать новый адрес в конец массива и т.д.
Может возможно обойтись без цикла? Есть какая нибудь возможность отлавливать обновление ифрейма и только тогда получать его адрес?

danik.js 16.10.2014 04:40

Под циклом ты setInterval подразумеваешь? Вот по событию:
<iframe src="http://javascript.ru" frameborder="0"></iframe>
<script>
    var frame = document.querySelector('iframe');
    frame.onload = function(e) {
        alert('Фрейм загружен');
    };
</script>

AlexVong 18.10.2014 10:30

Вот набросал userscript, который запускается на определенном сайте и отслеживает на нем обновление ифрейма и записывает адреса новых ифреймов в массив. Но не могу побороть такую проблему! ... надо чтобы адреса добавлялись в массив с каждым вызовом функции при обновлении ифрейма, а функция создает массив заново?
// ==UserScript==
// @name          MainJS
// @description   Iframe
// @include       [url]https://web-base.*[/url]
// ==/UserScript==
//alert('test');
//var urr;
var arr = [];
arr.push('https://web-base/index/');
var iframe = document.getElementById('BaseFrame');
var urr = iframe.contentWindow.location;

function refresh( ) {
var lastItem = arr[arr.length-1];
if (urr !== lastItem) {
arr.push(urr);
alert(lastItem);
}
else {
alert(arr);
}
}
if (iframe.attachEvent) iframe.attachEvent('onload', refresh);
else iframe.attachEvent('load', refresh, false);

danik.js 18.10.2014 10:33

Цитата:

Сообщение от AlexVong
а функция создает массив заново?

С чего ты это взял?
Цитата:

Сообщение от AlexVong
if (iframe.attachEvent) iframe.attachEvent('onload', refresh);
else iframe.attachEvent('load', refresh, false);

Во втором случае должно быть iframe.addEventListener

Ты че, в IE чтоли тестишь ? :D

AlexVong 18.10.2014 11:05

в IE .... :cray: сайт в локальной сети заточен под IE8. При каждом обновлении фрейма алерт выводит на экран массив в котором только два адреса - первый который "https://web-base/index/" и второй адрес полученный от фрейма, а надо чтобы адреса накапливались в массиве.


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