Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.06.2014, 09:52
Аспирант
Отправить личное сообщение для VitAl2013 Посмотреть профиль Найти все сообщения от VitAl2013
 
Регистрация: 27.05.2011
Сообщений: 67

Tampermonkey и frames, запуск скрипта одн раз
Подскажите способ запустить скрипт один раз, но чтоб работал на всей территории сайта. Пишу руссификатор+улучшение подачи информации - доступ нужен ко всему что на экране в окне.
Если использовать @noframes или @exclude, то он просто перестаёт видеть эти фреймы и соотвтетсвенно ничего в них не меняет выдавая в консоль:
Uncaught TypeError: Cannot read property 'frames' of undefined

Найденные способы в интернете:
if (window.top != window.self)  //don't run on frames or iframes
{
    //Optional: GM_log ('In frame');
    return;
}

и
window.addEventListener ("load", LocalMain, false);

function LocalMain ()
{
    // Your code goes here.
}

ничего не останавливают, скрипт прогружается 8 раз, потом как происходило всё 8 раз так и происходит - даже забиндить кнопку нельзя по нормальному - вешается 8 лиссенеров и все выполняются при нажатии. Не знаю как объяснить - может каждое окошко мнит себя главным и отсылает событие load как главное, а tampermonkey ведётся на это.

Есть ли ещё способы?
Ответить с цитированием
  #2 (permalink)  
Старый 25.06.2014, 11:18
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Так надо, чтобы скрипт не запускался во фреймах? Так @noframes именно это и делает. И доступ ко фреймам остается с основной страницы обычным. Первый из найденных способов тоже должен работать, он конечно загрузку самого скрипта не остановит, то преревет его выполнение, если он был запущен во фрейме.
Ответить с цитированием
  #3 (permalink)  
Старый 25.06.2014, 12:12
Аспирант
Отправить личное сообщение для VitAl2013 Посмотреть профиль Найти все сообщения от VitAl2013
 
Регистрация: 27.05.2011
Сообщений: 67

Надо чтоб он там повторно не запускался. У меня не работает - ошибку выплёвываемую в консоль показал - теряет фреймы. Вот на таком лапы к верху делает.
var menu=window.top.frames["navframe"].frames["menu"].document;

Если нет этого (@noframes) параметра, то всё нормально... срабатывает, хоть и криво.

Последний раз редактировалось VitAl2013, 25.06.2014 в 12:17.
Ответить с цитированием
  #4 (permalink)  
Старый 10.07.2014, 16:50
Аспирант
Отправить личное сообщение для VitAl2013 Посмотреть профиль Найти все сообщения от VitAl2013
 
Регистрация: 27.05.2011
Сообщений: 67

при
// @noframes

сам фреймы видны, но никаких их внутренностей нет
при
if (window.top != window.self)

и
window.addEventListener ("load", LocalMain, false);

каждый фрейм мнит себя LocalMain и запускает всё подряд

Ниужели нет нормального решения?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск функции 1 раз в нескольких местах max0n Общие вопросы Javascript 3 02.07.2013 15:01
[GM] Нежалательный запуск скрипта несколько раз VitAl2013 Firefox/Mozilla 5 01.08.2012 11:58
Запуск php скрипта через ajax hagen3 AJAX и COMET 2 09.09.2011 03:51
Чем можно организовать запуск скрипта атом. по времени. I5Rek Серверные языки и технологии 2 01.05.2011 23:00
Выполнение скрипта раз в сутки по cookie Avel Mink Элементы интерфейса 16 29.04.2011 09:38