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, время: 04:06. |