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 ведётся на это. Есть ли ещё способы? |
Так надо, чтобы скрипт не запускался во фреймах? Так @noframes именно это и делает. И доступ ко фреймам остается с основной страницы обычным. Первый из найденных способов тоже должен работать, он конечно загрузку самого скрипта не остановит, то преревет его выполнение, если он был запущен во фрейме.
|
Надо чтоб он там повторно не запускался. У меня не работает - ошибку выплёвываемую в консоль показал - теряет фреймы. Вот на таком лапы к верху делает.
var menu=window.top.frames["navframe"].frames["menu"].document; Если нет этого (@noframes) параметра, то всё нормально... срабатывает, хоть и криво. |
при
// @noframes сам фреймы видны, но никаких их внутренностей нет при if (window.top != window.self) и
window.addEventListener ("load", LocalMain, false);
каждый фрейм мнит себя LocalMain и запускает всё подряд Ниужели нет нормального решения? |
| Часовой пояс GMT +3, время: 15:19. |