После перехода на FF 1.5 beta перестала работать greasemonkey. В консоли пишет

Error: uncaught exception: [Exception... "Unexpected error"  nsresult: "0x8000ffff (NS_ERROR_UNEXPECTED)"  location: "JS frame :: chrome://greasemonkey/content/dochandler.js :: anonymous :: line 264"  data: no]

Тестировал на различных сборках от первой до второй беты, везде аналогично... :(

Кто-нибудь победил эту засаду?

http://userscripts.org/greasemonkey-0.6.2.xpi

Спасибо, н почему ее на http://greasemonkey.mozdev.org не выкладывают?

alc
Потому что оно еще бета.
http://greaseblog.blogspot.com/2005/09/firefox-15-compatible-greasemonkey.html

Кстати, GM для 1.5 обновился до версии 0.6.3. Ни на сайте, ни на GreaseBlog'е про это ни слова не было. Случайно увидел в maillist'е. Брать тут.

Выделить код

Код:

So, changes in this rel:
x Remove prefs when removing scripts.
x arguments.join and IURI fixes for DPb2

И, кстати, он улучшился заметно.

И, кстати, он улучшился заметно.

То что улучшился это хорошо... Только вот он у меня скрипты не хочет инсталить... :( Вроде тоже баг, а когда исправят неизвестно... :(

Modex
У меня, вроде, без проблем инсталлит...

==> Обсуждение расширений

Mishail
Думал попробовать 0.6.3... но что-то не могу найти ссылку... :P

Modex
Внизу сообщения аттач:
http://www.mozdev.org/pipermail/greasemonkey/2005-October/006356.html

Выделить код

Код:

-------------- next part --------------
A non-text attachment was scrubbed...
Name: greasemonkey-0.6.3.xpi
Type: application/x-xpinstall
Size: 41586 bytes
Desc: not available
Url : http://mozdev.org/pipermail/greasemonkey/attachments/20051016/d90681bf/greasemonkey-0.6.3-0001.bin

Сохрани, поменяй расширение на xpi ну и вперед :)

Сохрани, поменяй расширение на xpi ну и вперед smile

Спасибо! :) Я как раз с расширениями не разобрался...

P.S.: Все равно ошибку выдает и ничего не инсталит... :(
http://forum.mozilla.ru/uploaded/gm.PNG

Modex
У тебя FF 1.5? Попробуй сначала снести GM, перегрузись и заново поставь

http://userscripts.org/greasemonkey-0.6.3.xpi

Да, кстати, а что за скрипт ты пытаешься установить? Дай ссылку плиз.

Mishail
Да 1.5РЦ2 Пробовал - не помогает...
Ладно может позже еще раз на "твоей" версии попробую...
А скрипт: windows Genuine Advantage Workaround (IE)
P.S.: Модераторы не ругайте :rolleyes: (а то тут недавно схожую тему прикрыли)

Modex
А до этого у тебя GM стояло? Папка gm_scripts есть в профиле?

Mishail
Стоял :D ... Сейчас все удалил (профиль переставлял)... В профиле такую папку не нашел... :| Да собственно с чего ей быть, если ни одного скрипта не установлено...

Modex
А  другие скрипты без проблем ставятся?

Mishail
Не-а... :|
Вот кстати нашел у них на сайте, но в английском не слишком силен... :rolleyes:

* Update: If you install Greasemonkey 0.6.2 without any prior version installed, installing scripts will not work. You'll see a "file not found error. We'll be updating soon to fix this and are sorry for the bug.

* Апдейт: Если Вы инсталлируете Greasemonkey 0.6.2 при том что не стоит никакая предыдущая версия, установка скриптов работать не будет. Вы увидите ошибку "file not found". Мы скоро обновим расширение для исправления бага. Приносим свои извинения.

Al_H
Спасибо...
Значит как обычно - будем ждать... :|

Greasemonkey 0.6.4. Подробности тут

Мистика... :D На чистом профиле все ставится (по поводу работы еще не проверял), а на "старом" ничего все равно не хочет устанавливать скрипты... :( Профиль переставлять заново неохота...

Modex
Глянь сюда, вроде твой случай:

.derek said...

    i've just installed the 0.6.4 release and am having issues installing new scripts. as a safery measure i've completely uninstalled the previous gm extension and cleaned out any traces of gm from my firefox profile. i'm getting the following error. see screenshot.

    any tips for getting this working?
   
01 December, 2005 00:57   
boogs said...

    .derek,

    Go into about:config. Type "greasemonkey" into the search box. Right click on "greasemonkey.version" and select "reset".

Mishail
Спасибо! Скрипт установился... Уже не ругается... :P Сейчас попробуем проверить работоспособность... :)
P.S.: +1 ;)

Просто для сведения:
Jesse Ruderman - Updated Greasemonkey scripts

Проблема:
В Firefox не работает скрипт Multipopup 2.09.

Вводные:
- Mozilla Firefox 1.5.0.1
- новый профиль
- GreaseMonkey 0.6.4
- использование JavaScript включено
- browser.chrome.toolbar_tips = false

Дополнительно проверил в Mozilla Firefox 1.0.7 с GreaseMonkey 0.5.3 - результат тот же.

Помогите решить проблему. Может быть этот скрипт вообще не работает в Firefox?

Форумчане, если вам нетрудно, то, пожалуйста, подтвердите/опровергните хотя бы наличие проблемы, :rolleyes: А то бьюсь как рыба об лёд... JavaScript то всё равно не знаю, да и куда ещё копать тоже не знаю... :(

stEp
Проблема есть, подтверждаю. Могу как альтернативу предложить Multiline Tooltip Enabler

Могу как альтернативу предложить Multiline Tooltip Enabler

Боюсь что это совсем даже не альтернатива... :(

Боюсь что это совсем даже не альтернатива...

Зато работает :)

раскопал старый материал StraNNicK'a из его блога: Greasemonkey - пять полезных скриптов,  еще выцепил от туда ссылки на материалы о том как прикрутить GreaseMonkey к Опера (ногами не пинать, это так, для общего развития ;)):
Ссылка  номер раз
Ссылка номер два
Ссылка номер три

может пригодится кому :)

Объясните убогому, как в это чудо техники установить свой скрипт. Т.е. я его написал, он лежит у меня в C:\GM\test.js
При нажатии "New user script" получаю ошибку:

Выделить код

Код:

Failed to launch editor: [Exception... "Component returned failure code: 0x80520003 (NS_ERROR_FILE_EXECUTION_FAILED) [nsIMIMEInfo.launchWithFile]"  nsresult: "0x80520003 (NS_ERROR_FILE_EXECUTION_FAILED)"  location: "JS frame :: chrome://greasemonkey/content/utils.js :: openInEditor :: line 121"  data: no]

:::: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4
Версия GM 0.6.4

http://diveintogreasemonkey.org/install/userscript.html

обьясните мне как мать ево вообще установить на пальцах обьясните плиз :dumb:

Как NoScript заставить его игнорировать?

Пара вопросов по Greasemonkey:
1. Можно ли GM_xmlhttpRequest использовать не асинхронно?
2. Можно ли в Greasemonkey использовать SOAP?

Переставил firefox. И теперь при открытии файла скриптов у GreaseMonkey не воявляется панель, где предлагается установить скрипт. Не подскажете в чем может быть дело? Firefox 1.5.0.6 рус.

Jenyay
Вы не обновлялись с предыдущей версии Greasemonkey? Попробуйте удалить расширение и снова поставить.

Al_H

Нет, поставил с нуля. Переуставливал, не помогло.

Поставил английский firefox - не помогло. Ставил GreaseMonkey на чистый Flock - то же самое.

Очень странно. Возможно, у Вас что-то отключено. Только что проверил - у меня все работает.

Снес старый профиль, который после переустановки импортировал через MozBackup, поставил расширение - все работает.

memini
https://addons.mozilla.org/ru/firefox/addon/2708
https://addons.mozilla.org/ru/firefox/addon/2393

Доброе время суток,друзья!Вот,решил опробовать это новое для меня расширение-сразу же возник вопрос-как эти *js'ы
инсталлить?Пробовал drag'n'dropить на окно с настройкой расширения-ничего не происходит.Менюшек тоже вроде никаких
не видно типа файл-> ит.п...Хотя в папке профиля,в папке gm_scripts,имеется этот js файл.
Ставил на FF 1.5.0.6 и на Portable 2.0.0.3-везде одинаково.

Файл обязательно должен заканчиваться на <название>.user.js
Иначе ничего не будет происходить, устанавливать соответственно тоже.

Файл обязательно должен заканчиваться на <название>.user.js
Иначе ничего не будет происходить, устанавливать соответственно тоже.

Так,да,стоит юзер разумеется!
Иконочка обезьянки включена,и все равно-никаких движений.Мои действия-то правильны в теории?
Скрипты качал разумеется с userscripts.org

Вообще когда на сайте нажимаете Install Script отобразится окно установки (что-то вроде).
P.S.: попробуйте релиз-кандидат 0.7 (русский там есть)

Ы-ы-ы-ы!Как все просто оказалось!А я-то мудрил!Сохранял файлы скриптов на диск..потом чего-то,как-то заинсталить пытался!Спасибо Modex
Неплохо бы еще,делиться опытом работы с теми или иными скриптами.Вроде отдельной темки,как с расширениями:beer:

Может кто-нибудь помочь переделать
скрипт "greasewall"
http://userscripts.org/scripts/review/11754
чтоб он не блокировал страницу сразу, а сначала выдавал alert-сообщение блокировать/нет (или только предупреждение с одной кнопкой ОК и продолжал загрузку)
[по примеру "Shock Sites Warner" http://userscripts.org/scripts/review/1942 ]

я через дополнение "greasemonkey" научился кое как писать скрипты, и вот мне необходима как-то сохранять переменные между страницами. Посоветуйте как.
Про кукисы и про URL можете не писать, поскок немножко не-то.

Всем привет
У меня проблема с greasemonkey.
Я скачал его вчера , установил , нашел нужный мне скрипт на сайте http://userscripts.org.
По началу все работало хорошо , затем удалил скрипт.
Вскоре мне сново понадобился он  и я сново зашел на сайт и хотел его установить , но вот тут начались проблемы.
Я нажимаю на ссылку установить скрипт , получаю окно где мне надо подождать 3-и секунды , а затем нажать установить.
Я жду эти 3-и секунды , нажимаю установить и на этом все , ни чего не происходит , окно с предложением установить продолжает висеть и на мои нажатия на кнопку установки вообще не реагирует.

Пробовал удалять   greasemonkey заново ставить раз пять , даже решил версию более раннюю поставить , но эффект тоже , скрипты не скачиваются и не устанавливаются.

В чем проблема то не могу понять

решил протестировать недавно скачанный скрипт " vkmusicscript " - для загрузки треков вкладываемых пользователями "В контакте" на сайте.
Почему-то не пашет: должен добавить ссылку "заггрузка" возле кнопки "прослушать", однако ничего подобного нет.
Может быть я не правильно его поставил? Хотя что там ставить.
охватываемые адреса поставил /vkontakte.ru/*
:sick:

охватываемые адреса поставил /vkontakte.ru/*

А если */vkontakte.ru/* ?

Добавлено Wed Mar 26 08:58:39 2008 :
К тому же, вполне возможно www.vkontakte.ru

Отсюда

BloodCoder пишет:

Вль мне интерсно ввиду с тем что навреняка большинство пользователей регится в винде на кирилице (Юля Вася Дима Коля) .. и у всех значит возникают проблемы.. с Грезиманки .. ХМ..

Вполне возможно.
Правда, я себя всегда латиницей обзываю =) Кстати,
Win+R => firefox.exe -p (или firefox.exe -p -no-remote – если один профиль уже запущен) => создать профиль Firefox в любой другой папке.

Файл обязательно должен заканчиваться на <название>.user.js
Иначе ничего не будет происходить, устанавливать соответственно тоже.

Спасибо помогло, предлагаю это в начало темы написать и закрепить а то сразу не понятно в чём проблема возникает при установке.

Подскажите со скриптом, мне надо заменить код вида

Выделить код

Код:

<SCRIPT language="JavaScript">
<!--
window.moveTo(0,0);
window.resizeTo(screen.width,screen.availHeight);
//-->
</SCRIPT>

на что-то своё или удалить совсем. Как это сделать?

Только не предлагайте NoScript, мне остальные скрипты нужны, надо только этот модифицировать или удалить.

Имеется расширение, конкретно - Google Bar Lite.  У него есть элемент, текстовое поле с выпадающим меню с id GBL-SearchBox.
Я хочу с помощью скрипта, написанного в GreaseMonkey получить доступ к этому элементу, чтобы вписать туда свою информацию. Как это сделать?
var searchBox = document.getElementById('GBL-SearchBox'); выдает ноль.

Какая кодовая страница в GreaseMonkey используется?

Почему такая строчка работает:

Выделить код

Код:

k1.innerHTML == 'test'

а такая нет:

Выделить код

Код:

k1.innerHTML == 'тест'

И как сделать, чтоб работало?

Minor

Какая кодовая страница в GreaseMonkey используется?

Почему такая строчка работает:

Может utf8?

Может utf8?

А можно ли её сменить?

Или как с неё перекодировать строку в нормальные Windows-1251 и обратно?

Minor

А можно ли её сменить?

Для файла? Можно. Многие редакторы умеют. Вроде даже блокнот умеет (кодировку можно выбрать при Сохранить как).

Для файла?

Для расширения GreaseMonkey.

Добавлено Mon Aug  4 07:37:59 2008 :
Нет ли где-нибудь соответствия кодировок для utf8 и Windows-1251 ?

И ещё попутный вопрос, каким жаваскриптовым кодом преобразовать символы в номера симвлов? Ну там вместо 'a' - 224 и т. п.

Чтоб мне самому попробовать определниться с идиотскими кодировками.

Minor

Для расширения GreaseMonkey.

Ну вообще-то файлы для расширений с локализованными ресурсами должны быть в utf8 - это вроде бы обязательное требование.

И ещё попутный вопрос, каким жаваскриптовым кодом преобразовать символы в номера симвлов? Ну там вместо 'a' - 224 и т. п.
Чтоб мне самому попробовать определниться с идиотскими кодировками.

Ну если очень хочется - вот например Character Set Converters.
Ну и вообще сайт по ссылке в помощь ;)

Ребят, не подскажите? Есть ли в GreaseMonkey возможность сохранения глобальной переменной?
Например, чтоб при смене страницы значение переменной сохранялось?

Уже нашел ответ на свой вопрос! С помощью GM_setValue и GM_getValue можно записывать глобальные переменные!

Greasefire

Когда Вы посетите веб-страницу, которая совместима с использованием скриптов на Userscripts.org, это расширение будет выделять Greasemonkey значок в строке состояния. Щелкните правой кнопкой мыши значок Greasemonkey и выбрать "X скриптов доступных" , увидеть и установить скрипты для текущей страницы.

Z&N
Вот это супер!, спасибо!

ого, расширение 2Мб!!! :o

MadMan
Это ты ещё Cooliris не видел, он 4 Мб весит...

Lain_13
видел, даже пользовался...

Удивительная особенность гризфаера. Хоть он и весит 2 Мб, но сразу после установки выкачивает ещё 2 -- обновление базы. Внимание вопрос -- а зачем они прошивают старую базу в расширение?

может кто-нить написать гризманки скриптдля торенц ру, чтобы рядом с названием раздачи (заголовок фильма) появлялась кнопочка, нажав на которую все символы от "/" до "(" из заголовка "#H1(class=maintitle)" копировались в поисковую форму сайта imdb.com (или другого подобного) и цитировался рейтинг фильма в рамочку прям рядом с кнопкой? было б круто :)
а то на раздачах не все указывают рейтинг imdb, а часто просто дают ссылку на страницу этого фильма на том сайте. лезть туда - очень часто просто лень, а рейтинг знать хочется.

Возникла проблема, во время создания скрипта, может кто поможет :sick:

Для редактирования скрипта надо нажать кнопку «Изменить». В первый раз GM попросит выбрать редактор. В последующие будет автоматически открывать рабочую копию скрипта в выбранном редакторе.

при выборе редактора возникает вот такая ошибка

!Синтаксическая ошибка в имени файла, имени папки или метке тома.!

Заранее благодарен!

Присоединяюсь к вышезаданному вопросу!!! У меня та же проблема на винде (на Убунте пока не пытал)
:::: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2 (.NET CLR 3.5.30729)

А русских букв или спец. символов в пути к редактору нет?

Лично я извращался как только мог:
1. Менял профиль - не помогло.
2. Менял версию [firefox] - то же.
3. Менял местоположение профиля - так же.
4. Назначал разные редакторы - результат нулевой.
5. Сносил плагины - никак не помогло.
Увы... :(

ПротопопулуS
аналогично, все вышеперечисленное делал, тоже не помогает. Ставил это приложение на работе все работает нормально, а вот на домашнем ПК ни как (

Тут по-моему следует баг-репорт писать автору...

А русских букв или спец. символов в пути к редактору нет?

К редактору нет, а вот к папке где хранятся скрипты есть.
ПротопопулуS
не знаю где нужно указать путь, если перенести папку в другое место где не будет в пути кириллицы...
C:\Users\Пользователь\AppData\Roaming\Mozilla\Firefox\Profiles.... именно \Пользователь\ и не дает работать с редактором.
Создал новую учетную запись с латинским названием все заработало, только теперь неудобно что на компе 2 уч.записи.

Но тем не менее баг с этим остается!

Аа. Понятно. У меня уже давно учетка в латинице.

Просто много софта не распознают кирилицу в путях...

Приветствую всех. Возможно кто-нибудь знает ответ на следующий вопрос:
Куда/откуда функции GM_SetValue/GM_GetValue сохраняют/берут значения переменных для конкретного скрипта?
Имя переменной известно. Поиск по всем файлам на винчестере с текстом=имени переменной производил - положительного результата не получил.

Зачем это надо: есть greasemonkey скрипт и есть сайт, для некоторых страниц которого он работает. Сайт посещается с работы (пн-пт) и из дома (сб-вс). При работе скрипта, он периодически сохраняет некоторый набор переменных через функцию GM_SetValue, а при начале работы читает через GM_GetValue . Требуется синхронизировать эти данные между рабочим и домашним компьютером 1 раз в неделю :)

З.Ы. Я знаю, где хранятся куки для сайтов и теоретически мог бы попробовать переписать скрипт так, чтобы он сохранял все переменные в куки - их синхронизировать легче, однако скрипт весьма большой и часто обновляется автором - менять каждый раз способ сохранения переменных не слишком правильно :)

З.З.Ы. Всем спасибо за внимание, вопрос больше не актуален. Если кто-то еще столкнется с такой же проблемой, то ответ ниже:
GM_selvalue сохраняет все переменные в firefox preferences
прочитать/удалить/изменить/найти их можно через about:config  и затем ввести фильтр greasemonkey.scriptvals - будет выдан полный список сохраненных переменных со значениями :)

Всем привет. Кто-нибудь сталкивался с проблемой кодировок при выполнении функции GM_xmlhttpRequest?  Вместо русских букв приходят ромбики. У страницы в заголовке (если зайти просто браузером) написано

Выделить код

Код:

<meta content="text/html; charset=windows-1251" http-equiv="Content-Type"/>

.
Пробовал в поле заголовков (headers) писать

Выделить код

Код:

'Content-type': 'text/html;charset=windows-1251'

и даже

Выделить код

Код:

'Content-type': 'text/html;charset=utf-8'

- не помогло.

Заранее спасибо.

Upd:
Посмотрел пакет, приходящий с сервера, Wireshark'ом, там русские буквы закодированы так (к примеру):
\320\373\355\356\352
по байтам:
d0 fb ed ee ea
русское соответствие:
Рынок

Upd(2):
Решил проблему, используя вместо GM_xmlhttpRequest объект XMLHttpRequest.

Выделить код

Код:

    var req = new XMLHttpRequest();
    req.open('GET', '.......', true);
    req.overrideMimeType('text/html; charset=windows-1251');

Всем привет ещё раз, пишу скрипт, в котором нужно сохранять некую информацию в локальный файл (её достаточно много и хочется иметь отдельный файл для дальнейшей обработки, поэтому GM_setValue - не выход), где он будет расположен - абсолютно неважно (можно в папку профиля, если такое будет проще).

Наткнулся на такой пример:

Выделить код

Код:

   try {
    netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
//(*)location.href = "javasсript:netscape.security.PrivilegeManager.enablePrivilege( 'UniversalXPConnect')";
        var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
        
        //проверяем ОС
        if (navigator.userAgent.indexOf("Win") != -1) {
            file.initWithPath("c:\foo.txt");
        } else {
            file.initWithPath("/foo.dat");
        }
        
        if (!file.exists()) {
            file.create(file.NORMAL_FILE_TYPE, 0644);
        }
        
        var ioService = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
        var uri = ioService.newFileURI(file);
        var channel = ioService.newChannelFromURI(uri);
        var outputStream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
        
outputStream.init(file, 0x20 | 0x02, 00004, null);
var buffer = "This is a testn";
outputStream.write(buffer, buffer.length);
        
outputStream.flush();
outputStream.close();
} catch (e) {
        alert(e);
}

Рядом с ним было сказано: установить дополнение jslib_current_signed (установил, хотя и не знаю, зачем).
Проблема:
Ошибка "netscape is not defined". Где-то вычитал, что вместо первой строчки надо использовать закомментированную (со звёздочкой), но судя по всему, она также не работоспособная, потому как выдаётся сообщение "access denied to get property Components.classes".
На русском ничего не нашёл на эту тему, на английском вся информация сводится к двум вещам: то, что это надо написать и будет работать, и постам на форуме на тему: "я так написал, но оно не работает".

Собственно, вопрос: что делать?) Спасибо за внимание.

У меня проблема с vkontakte. Скачал скрипт отсюда - http://userscripts.org/scripts/show/16985. Он позволяет скачивать треки и находит тексты песен. Тексты он и правда находит, а вот скачивать не хочет - включается воспроизведение. К уже вписанному адресу ашttp://vkontakte.ru/* добавил ашttp://*.vkontakte.ru/* - не помогло. В чем может быть проблема?

народ подскажите где глянуть сами скрипты а то команды скрипта почему то не активно в меню(с этим вроде разобрался)....хотел глянуть как пишут их....вобщем надо сделать чтоб на странице открытой, типа кнопку в удобное для меня место, которая бы при нажатии например переходила далее, ссылка на далее имеется :)
может подскажите можно такое вобще сделать, так вроде не сложно думаю.

Помогите сделать скрипт который бы мог брать данные из формы с сайта. Есть html форма с <input>-ми из которых потом все отправляется через POST. Приведите пример как эти данные параллельно записывать в файл в виде имя = значение. Буду очень признателен если кто-то напишет пример, т.к. сам не силен в js.

А на firefox 3.5.3 greasemonkey работает?
Я пытаюсь установит дополнения но вылетает ошибка совместимости.
Может я что то не так делаю
Заранее спасибо.

Ru5laN92 пишет:

А на firefox 3.5.3 greasemonkey работает?

конечно работает.
1) Как включить режим принудительной совместимости в Firefox 3?. Первый способ.
2) Включение принудительной совместимости дополнений с новыми версиями ПО. Второй способ.

Попробовал удалить фрейм конструкцией типа:

Выделить код

Код:

var id;

     id = document.getElementById('menu');
        if (id) {
            id.parentNode.removeChild(id);
              }

где "menu" - это название фрейма.
Но не вышло. Как это сделать правильно?

Собственно, нужна помощь. Кто ни будь может модифицировать скрипт letitbit.net helper [2009-04-19], предназначенный для облегчения скачивания с файлообменника

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.
. Раньше скачивание по ссылке "бесплатно" находилось на той же странице, что и платная закачка и скрипт перекидывал сразу на окно ввода кода с капчи. Теперь же, кнопка "скачать" осталась на месте, но она не начинает проверку кода и закачку, если код введён верно, а перекидывает на другую страницу, на которой теперь находится поле для ввода кода и ещё одна кнопка, которая и отвечает за скачивание.
Посмотреть, как изменён дизайн файлообменника можно на
скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.
(Ссылка дана только для того, что бы можно было ознакомится с работой страницы загрузки. Программа, представленная по ссылке, бесплатна, если что)
Раньше страница для бесплатного скачивания выглядела так: 
http://host.justlan.ru/getimage/4af972cb507bb_thumb.jpg

Теперь она выглядит так: 
http://host.justlan.ru/getimage/4af972d019de0_thumb.jpg

После нажатия кнопочки "скачать файл" перекидывает на другую страницу: 
http://host.justlan.ru/getimage/4af972d5056f9_thumb.jpg

Что, ни кто не может помочь? :(

Почти не надеюсь. Но, может быть, кто-то подскажет скрипт для Greasemonkey для поиска нескольких слов на странице в границе одного предложения. Например, я ищу выражение "купить дом", а скрипт покажет (или подсчитает), эти слова в предложении "Купить красивый дом". Но только в границе предложения. Буду очень признателен.

надеюсь тема еще не умерла... :blush:
Скриптописатели, помогите сделать скрипт для обладателей Gold аккаунта на файлообменник

скрытый текст
letitbit.net

так, чтобы при нажатии для закачки на ссылку вида
скрытый текст
например, http://letitbit.net/download/7192.7c2f0ea4d2213020672e4af34/SetupAnyDVD6608.exe.html

автоматически после открытия страницы заполнялось поле пароля нужными данными и сам нажимался ентер для перехода на страницу с уже готовыми ссылками!
Такое может получиться?

Подскажите как в форму забросить текст из файла. Зарание спасибо;)

Я вот задался одним вопросом. Думаю, тут все или почти все юзают torrents.ru. На данном ресурсе главная страница, говоря по-простому, удалено, и скроллить постоянно неудобно (думаю, и не мне одному). Возможно ли реализовать такой скрипт, чтоб разделы можно было б скрыть за спойлерами? Если да, то откуда начать копать лучше всего?

Замечание п. 3.3
Sergeys

Народ почему greasemonkey неработает в minefield'е ? это можно как нить исправить? установил принудительную совместимость

:::: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.3a1pre) Gecko/20100103 Minefield/3.7a1pre (.NET CLR 3.5.30729)

Проблема решена. Поставил версию указанную в этом сообщении http://forum.mozilla-russia.org/viewtopic.php?pid=391348#p391348 и все стало работать. А почему же тогда последняя dev_версия неработает...:/:usch:

Вот у меня такой код скрипта.

Выделить код

Код:

document.getElementById('Div1').innerHTML = '<a href=javascript:MyFunc()>My Function</a>';

function MyFunc() {alert('Okey')};

Он ищет тег <div ID=Div1></div> вставляет в него ссылку, при клике на которую вызывается функция MyFunc, которая выводит надпись "Okey".

Всё это прекрасно работает, если просто вставить скрипт в страничку Но когда я вставляю это в скрипт Greasemonkey и применяю его к страничке, то ссылка выводится, но при клике на неё ничего не происходит. Почему?

Если принудительно приписать ссылке addEventListener("click", ... , то она будет срабатывать и для сайтов. Но это неудобно. Как сделать, чтобы не надо было приписывать addEventListener или есть ли такая функция, которая приписывала бы все addEventListener'ы автоматически?

В чём тут дело?

Minor пишет:

Но это неудобно.

А тут или удобно, или безопасно: http://wiki.greasespot.net/XPCNativeWrapper.

Infocatcher

Infocatcher пишет:

А тут или удобно, или безопасно: http://wiki.greasespot.net/XPCNativeWrapper.

Я не понял, в чём смысл этой ихней паранойи? Почему они боятся, что кто-то вставит обычную ссылку, но не боятся, что кто-то сделает тоже самое, только через addEventListener?


Ещё одна ипостась этой проблемы.

Выделить код

Код:

var k1 = document.getElementById('Div1').innerHTML
document.getElementById('Div1').innerHTML = k1;

После этого все ссылки на скрипты которые были в Div1 перестают работать. Что мне делать?
Существует ли функция, которая могла бы сделать полный парсинг всех существующих на свете событий произвольного куска кода, чтобы можно было их восстановить через addEventListener?

Minor пишет:

Я не понял, в чём смысл этой ихней паранойи? Почему они боятся, что кто-то вставит обычную ссылку, но не боятся, что кто-то сделает тоже самое, только через addEventListener?

В том, что со страницы нельзя получить ссылку на обработчик, добавленный через addEventListener.
А если со страницы можно узнать ссылку на объект, созданный с более высокими привилегиями, есть вероятность получения и самих привилегий.

Вообще, в Firefox 3 и выше повышенные привилегии просто так не получить. Но, с другой стороны, не просто же так оставили XPCNativeWrapper.

Так что, если очень хочется, можно делать вот так:

Выделить код

Код:

document.getElementById('Div1').innerHTML = '<a href=javascript:MyFunc()>My Function</a>';

unsafeWindow.MyFunc = function() {alert('Okey')};

Или как-то так:

Выделить код

Код:

location.href = "javascript: " + <![CDATA[

...

]]>.toString();

После этого все ссылки на скрипты которые были в Div1 перестают работать. Что мне делать?

Смотря что изначально находилось внутри Div1.
Ссылки на узлы DOM-дерева, которые были внутри Div1, будут в любом случае потеряны. Вернее, будут ссылаться на уже удаленные из документа объекты.

Infocatcher

Infocatcher пишет:

В том, что со страницы нельзя получить ссылку на обработчик, добавленный через addEventListener.

А если со страницы можно узнать ссылку на объект, созданный с более высокими привилегиями, есть вероятность получения и самих привилегий.

Что вообще за привилегии такие? Зачем они нужны?

Вообще это мой скрипт, мой браузер. Всё моё. Какое вообще их дело, чего я со своей страничкой делаю? Если у них мания преследования, то я здесь причём?

Как это отключить?


Выделить код

Код:

unsafeWindow.MyFunc = function() {alert('Okey')};

Alert я привёл только для примера. Чтобы показать, что не работает.


Infocatcher пишет:

Смотря что изначально находилось внутри Div1.
Ссылки на узлы DOM-дерева, которые были внутри Div1, будут в любом случае потеряны. Вернее, будут ссылаться на уже удаленные из документа объекты.

Мне надо не конкретную функцию вручную вписывать. А универсальную функцию, которая бы перебирала все теги, искала все их события, и всё, что в их событиях вписано и перестало работать, и активировала бы обратно через addEventListener или каким угодно другим способом. Можно так сделать?

То есть:

Выделить код

Код:

  // StartTag -  стартовый тег, от которого и ниже надо восстановить все события.
function AntiParanoics(StartTag) {

  var AllTags = StartTag.getElementsByTagName('*');

  // 1) Далее надо перебрать все события которые к тегу привязаны.

  // 2) Потом перепривязать все эти события через addEventListener.

}

Как мне перебрать все события которые к тегу привязаны?

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

Что вообще за привилегии такие? Зачем они нужны?

У расширений и той части интерфейса, что написана на JavaScript, больше привилегий, чем у скриптов с посещаемых страниц, для них и нужны.

Вообще это мой скрипт, мой браузер. Всё моё. Какое вообще их дело, чего я со своей страничкой делаю? Если у них мания преследования, то я здесь причём?

При том, что у браузера много пользователей. Можно написать самому себе небезопасное расширение, но нельзя делать так, чтобы оно было у всех/многих.

Alert я привёл только для примера. Чтобы показать, что не работает.

Во-первых, там обертка вида

Выделить код

Код:

(function() { /* весь код */ })();

Во-вторых, просто так нельзя добавлять свои поля глобальному объекту страницы (который window) – только через прямое добавление полей к unsafeWindow.


Мне надо не конкретную функцию вручную вписывать. А универсальную функцию, которая бы перебирала все теги, искала все их события, и всё, что в их событиях вписано и перестало работать, и активировала бы обратно через addEventListener или каким угодно другим способом. Можно так сделать?

По-моему, это проблема подхода. В том смысле, что проще изменить подход, чем делать универсальный велосипед.
И хотелось бы конкретный пример.

В любом случае, если не нужны GM-функции (и, скорее всего, поддержка других браузеров, которые могут не уметь E4X, который в данном случае упрощает написание строковых данных), достаточно делать вот так:

Выделить код

Код:

location.href = "javascript: " + <![CDATA[

function xxx() {
    alert(0);
}
document.body.setAttribute("onclick", "xxx();");

]]>.toString();

Тогда скрипт будет выполняться полностью в контексте страницы.

Infocatcher

Infocatcher пишет:

При том, что у браузера много пользователей. Можно написать самому себе небезопасное расширение, но нельзя делать так, чтобы оно было у всех/многих.

В чём оно небезопасное то? То, что на страничке матерное слово напишет? Текст он и есть текст.


Infocatcher пишет:

По-моему, это проблема подхода. В том смысле, что проще изменить подход, чем делать универсальный велосипед.

Удобство в том, чтобы не менять своих привычек.


Infocatcher пишет:

В любом случае, если не нужны GM-функции (и, скорее всего, поддержка других браузеров, которые могут не уметь E4X, который в данном случае упрощает написание строковых данных), достаточно делать вот так:

Как я уже говорил в прошлом постинге, мне нужен не alert, а функция, которая бы нашла ВСЁ, что поотключали эти больные манией преследования, и сама бы это включила бы обратно, через addEventListener, или любым другим способом.

Обнаружил, что если вызвать addEventListener несколько раз, то она добавит несколько вызовов на одну и туже функцию. Это как если бы при клике на ссылку, у вас бы открылось не одно, а сразу 10 одинаковых ссылок.

Прям маразм крепчает. Всё через ... сделано.

Существует ли фунция addEventListenerIfNeedit? Или addEventListenerOnce ? Или SetEventListener? Или FindAllEvents? Или RemoveAllEvents?

Или что-нибудь, что даст простое решение этой проблемы.

подскажите пожалуйста скрипт, с помощью которого можно просмотреть превью любой картинки подведя курсор мышки к ссылке на странице на эту картинку.

Inko7 пишет:

подскажите пожалуйста скрипт, с помощью которого можно просмотреть превью любой картинки подведя курсор мышки к ссылке на странице на эту картинку.

Попробуй это

Minor пишет:

Как я уже говорил в прошлом постинге, мне нужен не alert, а функция, которая бы нашла ВСЁ, что поотключали эти больные манией преследования, и сама бы это включила бы обратно, через addEventListener, или любым другим способом.

Я привел код, запускающий скрипты так, как если бы они находились на странице. В таком случае нету ограничений, накладываемых обертками, потому как их нету за отсутствием взаимодействия кода с разными привилегиями.
А без конкретного неработающего примера что-то сказать проблемно.

Прям маразм крепчает. Всё через ... сделано.

Так во всех браузерах сделано. Даже в IE, но там методы иначе называются и аргументы чуть другие.

Существует ли фунция addEventListenerIfNeedit? Или addEventListenerOnce ? Или SetEventListener? Или FindAllEvents? Или RemoveAllEvents?

Не существует, но можно написать.
А для перебирания добавленных обработчиков нужны привилегии отдельного расширения и Firefox 3.6 и выше. Eventbug вот работает.

Infocatcher

Infocatcher пишет:

Не существует, но можно написать.

Я вот мучаюсь, никак не могу написать. Как мне сделать SetEventListener вместо AddEventListener?

Мой код:

Выделить код

Код:

function SetEventListener(MyTag1, Event1, Func1) {
    // Сначала надо удалить ВСЕ старые события. Как это сделать?
  MyTag1.removeEventListener(Event1, MyTag1.handle, true);
    // Дальше надо установить новое событие.
  ATag.addEventListener(Event1, Func1, false);
}

  // Вызов:
  MyTag1.addEventListener(MyTag1, "click", function() {MyFunc1()});  

Не работает. Чего не так? Как исправить?

Infocatcher пишет:

А для перебирания добавленных обработчиков нужны привилегии отдельного расширения и Firefox 3.6 и выше.

То есть, чтобы МНОЮ же добавленные строчкой кода выше обработчики перебрать нужны ещё какие-то дополнительные привилегии?

Например, так:

Выделить код

Код:

var p = "__listeners";
function removeListener(node) {
    if(p in node) {
        var evt = node[p];
        node.removeEventListener(evt.type, evt.func, evt.useCapture);
    }
}
function addSingleListener(node, type, func, useCapture) {
    removeListener(node);
    node.addEventListener(type, func, useCapture);
    node[p] = { type: type, func: type, useCapture: useCapture };
}

Добавляемый обработчик запоминается в свойстве "__listeners", перед повторным добавлением сначала снимается старый обработчик.
При желании можно скрыть «хранилище» уже добавленных обработчиков, переместив его в отдельный массив, но тогда будет теряться производительность на проверку наличия узла, к которому требуется добавить обработчик, в этом массиве.

Minor пишет:

То есть, чтобы МНОЮ же добавленные строчкой кода выше обработчики перебрать нужны ещё какие-то дополнительные привилегии?

Чтобы перебирать все обработчики, нужен доступ к nsIEventListenerService, получить который могут только расширения.
Свои обработчики можно запоминать при добавлении самостоятельно.

20-01-2010 02:58:30

Не работает. Чего не так? Как исправить?

ATag нигде не объявлено.
К тому же, для снятия обработчика нужно совпадение всех аргументов addEventListener/removeEventListener – должна быть ссылка на ту же самую функцию и должен совпадать третий аргумент, отвечающий за момент перехвата события.

Infocatcher

Infocatcher пишет:

Например, так:

Заменил везде addEventListener на addSingleListener , но ничего не изменилось. Как появлялось несколько вызовов одной и той же функции при клике мышью, так и появляется.

Infocatcher пишет:

При желании можно скрыть «хранилище» уже добавленных обработчиков, переместив его в отдельный массив

То есть функция addSingleListener одноразовая? Ну addEventListener - не одноразовая функция, и мне тоже нужна не одноразовая.

Infocatcher пишет:

ATag нигде не объявлено.
К тому же, для снятия обработчика нужно совпадение всех аргументов addEventListener/removeEventListener – должна быть ссылка на ту же самую функцию и должен совпадать третий аргумент, отвечающий за момент перехвата события.

Вот как просто было написать a href=javascript:MyFunc() и никакого геморроя ...

Infocatcher пишет:

тогда будет теряться производительность

Об этом надо забыть, пока не расстреляют всех этих разработчиков, которые высыпали такую кучу ... на простых скриптописателей.

Maxone
спасибо, хорошая вещица!
но все равно это немного не то, хочется увидеть маленькую превьюшку при наведении... :whistle:

Minor пишет:

Как появлялось несколько вызовов одной и той же функции при клике мышью, так и появляется.

Или там нельзя свои свойства добавлять...
Это помимо опечатки в «func: type» (должно быть func: func).

Minor пишет:

Вот как просто было написать a href=javascript:MyFunc() и никакого геморроя ...

Я же сразу предложил попробовать засунуть весь код вовнутрь конструкции

Выделить код

Код:

location.href = "javascript: " + <![CDATA[
// некий код
]]>.toString();

Вот, вроде, работает:

Выделить код

Код:

var _nodes = [];
var _realNodes = [];
var _handlers = [];
function removeListener(node) {
    var indx = _realNodes.indexOf(node);
    if(indx != -1) {
        var evt = _handlers[indx];
        _nodes[indx].removeEventListener(evt.type, evt.func, evt.useCapture);
        _nodes.splice(indx, 1);
        _realNodes.splice(indx, 1);
        _handlers.splice(indx, 1);
    }
}
function addSingleListener(node, type, func, useCapture) {
    node.addEventListener(type, func, useCapture);
    var realNode = node.wrappedJSObject || node;
    removeListener(realNode);
    _nodes.push(node);
    _realNodes.push(realNode);
    _handlers.push({ type: type, func: func, useCapture: useCapture });
}

addSingleListener(document.body, "click", function(e) { alert(e.target); }, true);
addSingleListener(document.body, "click", function(e) { alert(e.target); }, true);
addSingleListener(document.body, "click", function(e) { alert(e.target); }, true);

Infocatcher

Infocatcher пишет:

Вот, вроде, работает:

Спасибо! Потестирую.

А есть какая-нибудь функция, чтобы можно было загрузить произвольную страничку в переменную? Чего-то никак найти не могу. Что-нибудь типа:

Выделить код

Код:

var s1 = LoadPage('http://google.com/index.html');
alert(s1);

Minor пишет:

А есть какая-нибудь функция, чтобы можно было загрузить произвольную страничку в переменную?

Если произвольную, то только GM_xmlhttpRequest.
А для страниц с того же домена можно использовать XMLHttpRequest (примеры).

Infocatcher

Infocatcher пишет:

Если произвольную, то только GM_xmlhttpRequest.
А для страниц с того же домена можно использовать XMLHttpRequest (примеры).

Спасибо! :)

Почему-то удаётся получить responseText, но responseXML равен null.

Там по ссылке написано:

Note: If the server doesn't apply the text/xml Content-Type header, you can use overrideMimeType() to force XMLHttpRequest to parse it as XML anyway.

А как это сделать?

Minor
Примерно так:

Выделить код

Код:

var req = new XMLHttpRequest();
req.open("GET", "http://...", false);
req.overrideMimeType("text/xml");
...

А для GM_xmlhttpRequest есть пример:

Выделить код

Код:

    // Inject responseXML into existing Object if not present
    if (!response.responseXML)
      response.responseXML = new DOMParser().parseFromString(response.responseText, "text/xml");

Кто-нибудь может написать или сказать, где попросить, чтоб написали скрпит для history.qip.ru? Хочется иметь возможность просматривать большее количество сообщений на странице, сохранять всю историю себе в txt.

Infocatcher
Спасибо!

А можно сделать так, чтобы сначала загружался скрипт, а потом грузилась страничка?
Чтобы не надо было ждать пока страничка полностью загрузится. А чтобы по мере её загрузки скрипт выполнял свою работу.

Minor пишет:

А можно сделать так, чтобы сначала загружался скрипт, а потом грузилась страничка?
Чтобы не надо было ждать пока страничка полностью загрузится. А чтобы по мере её загрузки скрипт выполнял свою работу.

Greasemonkey срабатывает по событию DOMContentLoaded – то есть когда DOM-дерево полностью построено (но какие-нибудь картинки еще грузятся).
С очередностью сложно, не знаю. А для одновременности придется писать свое расширение и слушать какой-нибудь onProgressChange.

Здравствуйте. А не поможете решить вопрос http://forum.mozilla-russia.org/viewtop … 11#p409111 Я просто сам в скриптах ни грамма не понимаю.
Соответственно сам написать не смогу. Да и вообще не понимаю что и куда писать. Расширение поставил поставил, а что делать не знаю.

Infocatcher

Infocatcher пишет:

А для одновременности придется писать свое расширение и слушать какой-нибудь onProgressChange.

А существует простой способ переделать скрипт в расширение, которое запускает скрипт по onProgressChange?

Minor пишет:

А существует простой способ переделать скрипт в расширение, которое запускает скрипт по onProgressChange?

http://forum.mozilla-russia.org/viewtopic.php?id=39496
Готового нету, вроде как. Так что сначала нужно сделать сам механизм, позволяющий узнать момент начала загрузки. А запускать скрипты по какому-то событию легко (ну, если обойтись без интерфейса настроек) – сложность только в том, чтобы узнать момент наступления события.

Infocatcher
Но ведь AdBlock как-то блокирует элементы сразу, а не после загрузки страницы.

Ещё вопрос, можно руссифицировать скрипт без UTF-8?

Minor пишет:

Но ведь AdBlock как-то блокирует элементы сразу, а не после загрузки страницы.

Там другой механизм. Перед загрузкой любого объекта сначала опрашиваются все «слушатели» и если ни один из них не отменил запрос, то начинается загрузка. То есть, по идее, на этом этапе нельзя сказать, будет ли это что-то загружено.

Например, в BetterCache вот так:

Выделить код

Код:

var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
observerService.addObserver(httpObserver, "http-on-examine-response", false);

и

Выделить код

Код:

var httpObserver = {
  ...
  observe: function(subject, topic, data) {
          if (topic == "http-on-examine-response")
                {
                   ...
                }
  }
};

Только при этом еще нет объекта window страницы, чтобы выполнить код в его контексте. :|

P.S. А в Adblock Plus, насколько я понимаю,

Выделить код

Код:

    //
    // nsIContentPolicy interface implementation
    //

    shouldLoad: function(contentType, contentLocation, requestOrigin, node, mimeTypeGuess, extra)
    {
    ...

06-02-2010 19:00:53

Ещё вопрос, можно руссифицировать скрипт без UTF-8?

Можно.

Выделить код

Код:

alert("\u041F\u0440\u0435\u0432\u0435\u0434\u0021");

После \u – hex-код символа.
Только это сомнительное удобство.

Infocatcher пишет:

Можно.
Код:

alert("\u041F\u0440\u0435\u0432\u0435\u0434\u0021");

После \u – hex-код символа.
Только это сомнительное удобство.

Всё равно лучше чем ничего! Спасибо!

Скажите, если я напишу какой-нибудь гениальный скрипт, то есть какое-нибудь место, где им можно поделиться (кроме этой странички)?

Minor
Естественно — выложи на userscripts.org, самый главный сайт. Тысячи людей будут безмерно тебе благодарны.

Никому не попадался скрипт который по клику отмечал чекобксы на странице? Есть просто сайты где постоянно приходится работать и какой-то Петя не додумался "отметить все" прикрутить.

Daglus
И снова userscripts.org, поиск по фразе check all checkboxes. Два, на мой взгляд, неплохих скрипта — Select (управление из меню значка Greasemonkey) и Check boxes (сверху страницы появляется панелька со ссылками).

pi.v.vitaly
Салют инопланетным захватчикам!

Sid спасибо Select  понравился, жалко нельзя в нем через сочетания клавиш выделять все

Обновился Greasemonkey 0.8.20100408.6

Здравствуйте!

Я пишу скрипт, который на всех (почти) страницах выводит пользовательскую форму
http://img-fotki.yandex.ru/get/4300/donjulio.5/0_3d397_dc5c7a08_M.jpg
Сейчас средствами CSS я просто зафиксировал DIV с формой наверху окна. Но пришлось предусмотреть пару кнопочек для свертывания / развертывания формы т.к. она закрывает часть страницы.

Вопрос: Как разместить эту форму аналогично тому, как сделано в результатах поиска картинок Google:
http://img-fotki.yandex.ru/get/4208/donjulio.5/0_3d281_f5402415_M.jpg
т.е., чтобы страница прокручивалась и не закрывалась моей формой?

Буду благодарен за мысли и примеры :-)

Что-то не придумаю никак, как это реализовать через Greasemonkey.

эм. а вот у меня при включенном Greasemonkey, открывается сего домашняя страница при любой операции о очень много раз. как это отключить?

можно ли как-то через Greasemonkey скриптом заставить подобные сайты как http://www.cjclub.ru/ вписываться без горизонтального скрола на мониторах с разрешением 1024-768? Если да то от примера не отказался бы.  Вариант поставить еще одно дополнение не устраивает :)

Daglus пишет:

можно ли как-то через Greasemonkey скриптом заставить подобные сайты как http://www.cjclub.ru/ вписываться без горизонтального скрола на мониторах с разрешением 1024-768? Если да то от примера не отказался бы.  Вариант поставить еще одно дополнение не устраивает

Я думаю, можно.
Нужно выяснить, какие элементы на странице не дают сузиться странице до 1024.
Например, ширину div'а, заданную через атрибут width можно переназначить. Если ширина задана через css - следует присвоить соответствующему свойству нужное значение.

05-06-2010 20:39:20
Товарищи!
Такой вопрос:
Я добавляю на страницу свою форму (поля textarea, кнопки и т.п.).
Для этого приходится пользоваться конструкцией вида:

Выделить код

Код:

var logo = document.createElement("div");
logo.innerHTML =
'<div>' +
'<код: стили, html, скрипты>' +
...
'</div>';
document.body.insertBefore(logo, document.body.firstChild);

Как видно, функции Javascript я тоже записал внутри этой конструции.
Но!
Таким образом эти ф-ции стали частью документа и, видимо, на некоторых страницах конфликтуют с "родными" скриптами и работают со сбоями.
Что я делаю не так?
Можно ли элементы управления встроенные через приведённую конструкцию связать с ф-циями, вынесенными за эту конструкцию?
Я понятно изъясняюсь? :)
.

julios пишет:

Что я делаю не так?

Видимо, не так там с уникальностью названий глобальных переменных.

julios пишет:

Можно ли элементы управления встроенные через приведённую конструкцию связать с ф-циями, вынесенными за эту конструкцию?

Можно, связывайте. :D
addEventListener в помощь.

Или нужно оставить расположение скриптов как есть, но отказаться от глобальных переменных:

Выделить код

Код:

(function() {
    var x = "test";
    alert(x);
})();
alert(x); // скажет, что нет такой переменной

отказаться от глобальных переменных

вообще, стараюсь избегать использования глобальных переменных, но у меня и надобности такой не было.
Хотел бы уточнить свой второй вопрос.
Вот так выглядит мой скрипт для Greasemonkey:

Выделить код

Код:

// ==UserScript==
// @name  FillForm_01
...
// ==/UserScript==

document.getElementById('main_body').align="left"; // К примеру, выполняем некоторые действия с элементами страницы
document.getElementById('main_body').style.width="50%"; // привет, Daglus

function $1 () {} // Определяем функцию $1 ()

// Затем уже упомянутая конструкция:

var logo = document.createElement("div");
logo.innerHTML =
'<div>' +
'<script type="text/javascript">' +
'function $2 () {}' +
'</script>' +
'$2 ()' + // Эта ф-ция будет вызвана
'$1 ()' + // Эта ф-ция НЕ будет вызвана
'</div>';
document.body.insertBefore(logo, document.body.firstChild);

Как тут применить addEventListener?

'</script>' +
'$2 ()' + // Эта ф-ция будет вызвана
'$1 ()' + // Эта ф-ция НЕ будет вызвана
'</div>';

Опечатка?
Тут подразумеваются глобальные переменные, кстати.

Функции $1 и $2 объявлены в разных местах. А Greasemonkey принудительно заворачивает весь код в функцию:

Выделить код

Код:

(function() { некий_код; })();

Так что

Выделить код

Код:

var foo = 1;
location.href = "javascript: alert(foo);";

приведет к ошибке.

Нет, опечатки нет.

Таких конструкций:

Выделить код

Код:

var foo = 1;
location.href = "javascript: alert(foo);";

у меня нет.

Про глобальные переменные, извините, ничего не понял.
Всё, что я о них знаю, это знания из азов PHP.

julios пишет:

у меня нет

Выделить код

Код:

function foo() {}
alert(foo);
var s = document.createElement("script");
s.type = "text/javascript";
s.appendChild(document.createTextNode("alert('Script'); alert(foo);"));
document.body.appendChild(s);

julios пишет:

Про глобальные переменные, извините, ничего не понял.

$1 () – вызов глобальной переменной с именем "$1", что эквивалентно вызову window.$1();.
Таким образом, или функция $1 должна быть объявлена в том же контексте, в котором производится ее вызов, или нужно вообще отказаться от глобальных переменных:

Выделить код

Код:

function f() {
    alert(0);
}
f();

и

Выделить код

Код:

(function() {
    alert(0);
})();

Подскажите скрипт который на определённой странице жмёт кнопку через заданный промежуток времени... 
Я пользуюсь iMacros,и команда в нём выглядит так;

скрытый текст
TAG POS=1 TYPE=INPUT:SUBMIT FORM=NAME:f ATTR=NAME:next&&VALUE:GOU
WAIT SECONDS=15

Но лучше бы это делал отдельный скрипт,который к тому же и не заметен в работе..  :(

Ребята есть ли скрипт который в одноклассниках автоматически ставит пятерки просматриваемой фотке, а то один человек меня уже достал:mad:

Infocatcher пишет:

Выделить код

Код:

function foo() {}
alert(foo);
var s = document.createElement("script");
s.type = "text/javascript";
s.appendChild(document.createTextNode("alert('Script'); alert(foo);"));
document.body.appendChild(s);

Вот в этой строчке:

Выделить код

Код:

s.appendChild(document.createTextNode("alert('Script'); alert(foo);"));

смысл alert(foo); мне не ясен.
Он ничего не выводит.

julios пишет:

смысл alert(foo); мне не ясен.
Он ничего не выводит.

Иногда смысл – в отсутствии чего-либо.

Если некая функция foo должна вызываться скриптом со страницы, то она должна быть объявлена там же.

Выделить код

Код:

function foo() { return 0; }
alert(foo);
var s = document.createElement("script");
s.type = "text/javascript";
s.appendChild(document.createTextNode("alert('Script'); alert(typeof foo + '\\n' + foo2); function foo2() { return 1; }"));
document.body.appendChild(s);

Извините я новичок в общении с этим приложением и не очень хорошо разбираюсь в компьютерах, не могли бы вы мне объяснить почему у меня при нажатии на кнопку скачать (вконтакте) аудиофайл воспроизводится в новой вкладке, а не скачивается как было раньше?
Возможно ли, что я удалила какой-то важный компонент ???

Всем добрый день, кто больше понимает помогите елси возможно сваять скрипт  который бы с этого сайта

скрытый текст
http://www.ex.ua/view/1641092

По клику на играть открывал ссылку не в проигрывателе сайта в плеере в системе (VLC или Smplayer). Каждый раз копировать ссылку и вставлять в плеер нудно :)

У меня greasemonkey конфликтует с picasaweb - там перестают работать все кнопки . Это можно поправить ?

GeorgM
может конфликтует всё же не само дополнение, а какой-то из скриптов?

На момент возникновения проблемы был включен только скрипт savefrom для скачивания с депозита .

Аналогичная проблема, GeorgM, не могу разобраться(

Подскажите, пожалуйста, как сделать, чтобы этот скрипт http://forum.mozilla-russia.org/viewtopic.php?id=25555 срабатывал в заданном диапазоне адресов без нажатия F2, сразу.

hop
Заменить

Выделить код

Код:

if (e.keyCode == teMyKeyCode) {

на

Выделить код

Код:

if (!e || e.keyCode == teMyKeyCode) {

и в самом конце добавить

Выделить код

Код:

changeColors();

Infocatcher пишет:

hop
Заменить

Выделить код

Код:

if (e.keyCode == teMyKeyCode) {

на

Выделить код

Код:

if (!e || e.keyCode == teMyKeyCode) {

и в самом конце добавить

Выделить код

Код:

changeColors();

Спасибо!

Добрый день господа!
Подскажите, существует ли какой либо скрипт, который бы позволял выполнять задачи описанные в этой теме http://forum.mozilla-russia.org/viewtopic.php?pid=454620#p454620
И не могли бы Вы просветить, а дорого ли стоит заказать написание скрипта, для выполнения задач из  вышеуказанной темы.
Спасибо.

Доброго времени суток.
Подскажите, пожалуйста, аналог для GM оперовоской:

Выделить код

Код:

window.opera.addEventListener('BeforeScript', function (e){

Т.е. как в GM можно отследить событие до/после выполнения браузером JS скрипта.

ето только у меня GM не удаляет скрипты на ночных сборках GM?

`p r o x y
http://forum.mozilla-russia.org/viewtopic.php?id=46965.

Друзья, подскажите новичку, почему не работает onclick?
Пишу простейший скрипт:

document.body.innerHTML+='<button onclick="qqq()">lololololololoolol</button>';
function qqq(){
alert('');
}

и ничего не происходит...

Tom_Creo

Друзья, подскажите новичку, почему не работает onclick?

Потому что это небезопасно для здоровья.

MySh пишет:

Tom_Creo

Друзья, подскажите новичку, почему не работает onclick?

Потому что это небезопасно для здоровья.

спасибо :)
<input id="btn" value="Submit" type="button" />

button=document.getElementById("btn");
button.addEventListener("click", run, false);

function run()
{
do something

(с) Vectorspace

Проблема с GreaseFire - стоит версия 1.0.4 совместимо с Greasemonkey. Почему-то иногда выдает, что не совместимо с 3.6.13 - решается проблема обновлением браузера и в результате перезапуска всё в порядке. Такое бывает время от времени. Как исправить?

Друзья, подскажите, пожалуйста, почему не работает setInterval и setTimer в гризманкей?

document.body.innerHTML+='<input id="btn" value="Submit" type="button" />'
button=document.getElementById("btn");

var ttt=setInterval("pool()",1000);

function pool(){
button.value+="1"
}

Консоль ошибок пишет:

Ошибка: pool is not defined

setInterval приводит к вызову eval("pool()"), а функции, объявленные в Greasemonkey, не попадают в глобальную область видимости.

Выделить код

Код:

var ttt=setInterval(pool,1000);

http://wiki.greasespot.net/Main_Page и в особенности http://wiki.greasespot.net/XPCNativeWrappers

Друзья, подскажите функцию-аналог симуляции клика для мозиллы:

Выделить код

Код:

<span onclick="alert('')" id='filo'>работает в IE</span>

<script>

document.getElementById('filo').click()

</script>

Tom_Creo пишет:

функцию-аналог симуляции клика

https://developer.mozilla.org/en/DOM/do … reateEvent

Товарищи!
Что-то я туплю конкретно.
Как в версии 0.9.1 подключать новые сайты к скрипту?
Раньше было: «Управление скриптами» и таблица для добавления URL.
А теперь, что-то непонятно.
Неужели вручную в тексте скрипта?

http://img-fotki.yandex.ru/get/5902/donjulio.6/0_4d97a_40675a40_M.jpg Крупнее

Добавлено:
Похоже, что только вручную.

Да как-то неожиданно обновили для пользователей... У меня остались некоторые скрипты выкл., как их теперь включить то? В поле одна пустота - установленных скриптов не видно. Кто-то разобрался, как бороться? Объясните популярно :rolleyes:

Skarm пишет:

В поле одна пустота - установленных скриптов не видно. Кто-то разобрался, как бороться? Объясните популярно

В менеджере дополнений ничего не появилось?
см скриншот подкатом в спойлире:

скрытый текст
http://forum.mozilla-russia.org/uploaded/ff4b11grmon.JPG

Попробуйте перезагрузить Вашу тему или сменить тему на дефолтную.

RusDS
Спасибо чуток проту... Для всех! новая версия конфликтует с AiOS пришлось посленего отключить, что не есть хорошо -- больно привык к нему)

Skarm пишет:

Для всех! новая версия конфликтует с AiOS пришлось посленего отключить, что не есть хорошо -- больно привык к нему)

Ставь бету AiOS - никакого конфликта с ней нет.

Извините, ничего не понял (

АиОС — даже не знаю, что такое и с чем едят, поэтому у меня его нет.

Всё-таки не ясно, как подключить конкретный скрипт к конкретной странице?
Мой скриншот с дефолтной темой я уже показывал:

скрытый текст
http://img-kiev.fotki.yandex.ru/get/5902/donjulio.6/0_4d97a_40675a40_orig.gif

julios пишет:

как подключить конкретный скрипт к конкретной странице?

julios пишет:

Неужели вручную в тексте скрипта?

Похоже, что именно так. На самом деле, написать "// @include " перед URL в тексте скрипта не намного сложнее чем вставить этот URL в специально отведённое для этого поле. Зато теперь метаинформация обновляется сразу после изменения (и сохранения) скрипта, что очень удобно для разработчиков.

Я всё-таки немного не допонимаю ))
У меня скрипт задействован уже на нескольких десятках страниц.
Мне их все в тексте скрипта указать?
Это ж много, уважаемые!

Тем более не ясно, почему скрипт всё-таки продолжают работать на тех веб-страницах, которые были ранее «добавлены» через «диалог»?

Попытался разобраться, что пишут ребята в Гугл-группе.

Аргументы, какие-то странные там.
Придётся, всё-таки, за свой скрипт браться :rolleyes: :music:

julios пишет:

У меня скрипт задействован уже на нескольких десятках страниц.
Мне их все в тексте скрипта указать?
Это ж много, уважаемые!

Если речь идёт о том, что надо портировать старые скрипты, то можно облегчить эту задачу выдрав нужные include из файла gm_scripts\config.xml, который лежит в текущем firefox профиле.

Люди, помогите, пожалуйста разобраться - у меня накрылись старые профили и теперь я не могу восстановить самые элементарные и привычные черты поведения своего браузера.
Среди них была возможность открывать нелинкифированные ссылки двойным кликом. Я нашел такой скрипт, но он почему-то не работает.

Что-то ты не то нашел :) Это обработчик для уже существующих линков.

По двойному клику - не знаю, есть такие что просто преобразуют все в линки, что-то из этой серии попробуй: http://userscripts.org/scripts/show/1352

Radow
а зачем скрипты ради этого? есть же нормальное дополнение Text Link.

shumomer, там именно открывался текст, который был несформатированной ссылкой. С короткими (базовыми) ссылками такой подход для меня приятнее линкифицирования (как делает Linkify Plus).
iDev.Pi: Спасибо, это был он.
>а зачем скрипты ради этого? есть же нормальное дополнение
Ну, обычно у меня противоположный подход: зачем нагружать систему еще одним расширением, если вопрос можно решить более легким и гибким скриптом?

Radow пишет:

если вопрос можно решить более легким и гибким скриптом?

я раньше тоже так думал, а потом оказалось, что скрипты в среднем глючней чем аналогичные им по функциям дополнения.

09-03-2011 15:31:25

Radow пишет:

такой подход для меня приятнее линкифицирования

как объяснял мне Infocatcher - такой подход ещё и не оказывает задержки на загрузку страницы.

>скрипты в среднем глючней чем аналогичные им по функциям дополнения
В среднем - да, но если найти и испробовать что нибудь толковое, да еще и запретить ему обновления... http://www.kolobok.us/smiles/mini/music_mini.gif

Najlus пишет:

Skarm пишет:Для всех! новая версия конфликтует с AiOS пришлось посленего отключить, что не есть хорошо -- больно привык к нему)Ставь бету AiOS - никакого конфликта с ней нет.

долго копался почему не открывается окно настроек, переустановил на бету и заработало http://firefox.exxile.net/forum/viewtop … mp;t=16106

Вопросы, скорее всего, глупые, но в первом подходе ничего не накопал:

1. Можно ли взять кусок простой "линейной" (типа body, h1, h2, p, p, table, table, h2, p, p... /body) страницы и как-то либо вообще вынести этот "кусок" в div либо как-то иначе ограничить его какими-то "метками" (как-то "нарисовать" вокруг именно этого куска тот же div?) для дальнейшей обработки?

2. Можно ли переместить любое содержимое ячейки одной таблицы в ячейку другой?

Т.е.
вместо

Выделить код

Код:

TABLE-1 :  TR-1.1 :  [TD-1].1.A  TD-1.1.B
TABLE-2 :  TR-2.1 :  TD-2.1.A  [TD-2].1.B

сделать

Выделить код

Код:

TABLE-1 :  TR-1.1 :  [TD-1].1.A  [TD-2].1.B
TABLE-2 ...



Если "да", то как, в самых общих чертах?

Кто-то использует скрипт Insta-click (Открыть вкладку правой мыши) на 4.0 начало вылезать контекстное меню, которого на 3.6 не было?
Как бороться?!

Skarm пишет:

скрипт Insta-click

Попробуй одноимённый аддон https://addons.mozilla.org/en-us/firefox/addon/instaclick/ или Right Links

VitaR пишет:

Вопросы, скорее всего, глупые, но в первом подходе ничего не накопал

А в чем именно проблема? В подобных задачах общий подход один - разбор DOM-структуры документа, и выполнение необходимых преобразований. И то, и другое - вполне решаемые задачи.

VitaR
Спасибо за оперативность! Тогда еще один Офтопик: стоит ли на лягать на скрипты или одноимённые аддоны юзать?

Как написать скрипт который бы нажымал ссылку два раз на определенной странице...????

Skarm, дело твоё. Скрипты намного гибче, всё можешь сделать сам, а аддоны пишет кто-то. Но нужны знания.

hydrolizer, главная проблема

в том, что
с яваскриптом я "на Вы" :) ибо только от случая к случаю в них заглядываю. Т.е. поскольку не дурак то сам разобраться могу, но мешает learning curve вкупе с отсутствием времени. Какой-нить чужой скрипт подошёл бы для jumpstart-а, но пока не смог найти подходящий

Настолько "общий подход" я и сам знаю :) но чуть глубже уже непонятки. Например для "необходимых преобразований" вспоминается только документ.врайт :) и иже с ним, но что-то подсказывает, что это малёхо не то.

Изначально была мысль переделать десигн Руборда и подобных форумов под нетбучный экран, убрав несколько верхних таблиц в блок, который был бы сжат в узкую полоску вверху страницы.

В общих чертах я представляю, что нужно в одном месте вставить <div>, в другом, на несколько таблиц ниже, вставить </div>, и потом извращаться с ним как душе угодно -- прятать, перемещать и т.д. Но вот как именно вставить тег в конкр. место я что-то не могу врубиться :dumb:

Никто не в курсе как можно проиграть музыкальный файл через скрипт Greasemonkey?

Кратко обрисую задачу - скрипт проверяет страницу на присутствие определенных данных, и если они найдены то хочется чтобы проигрывался звук. Скрипт проверки написан, осталось только действие после нахождение данных.
В интернете полно вариантов, но только с использованием флеш-проигрывателя, около двух дней пытался прикрутить такой проигрыватель - безрезультатно, получаю или ошибки доступа, или ошибку возвращения пустого значения.

Jetro а если посмотреть как это реализовано в расширениях, например DownThemAll! :)

Есть скрипты добавляющие что-либо на страницу about:blank? Найти не могу=(

А Greasemonkey умеет сам обновлять установленные скрипты (как Fx обновляет аддоны), или для этого обязательно устанавливать Script Updater http://userscripts.org/scripts/show/8877 ?

Если в скрипте прописано обновление, то обновит, нет - нет.

Примерно год назад Гугл ввел с моей точки зрения чрезвычайно неудобный просмотр картинок.
Я нашел скрипт "Old Google Images" , который запускается через greasemonkey
http://userscripts.org/scripts/show/82145
Но на FireFox 4 скрипт перестал работать.

Подскажите пожалуйста что можно придумать.
Может быть есть какая либо альтернатива?

Вариант нажать внизу "Переключитесь на упрощенную версию" не устраивает.

Вот нашел обновленный скрипт, но тоже почему то не срабатывает :(
http://userscripts.org/scripts/show/48293

Skorii у меня вот этот работает > Google Image Basic , но не в Greasemonkey а в Scriptish :)

Крошка Ру, спасибо! Сейчас попробую.
Работает!

Крошка Ру пишет:

Jetro а если посмотреть как это реализовано в расширениях, например DownThemAll!

Не было времени заняться этим...
В целом идея хорошая, но вот реализовать это... В общем перерыл я около четырех плагинов, и безрезультатно. Пытался прикрутить сторонние скрипты на воспроизведение звука - аналогично. Проигрался я с этим больше недели, а получал или ошибки доступа, или возврат нулевых значений, или ошибки в коде.
В итоге реализовать такой скрипт у меня так и не получилось, помешало или то что в Greasemonkey это вообще сделать невозможно (прав у него мало) или у меня просто опыта в JS маловат (при чем скорее всего второе). Но где наша не пропадала - это я JS знаю плохо, а вот Delphi... В общем сделал ход конем - из Greasemonkey-скрипта данные передаются в мою софтину, а там уж я разгулялся по полной, и музыку воспроизводит, и нужные мне действия выполняет. Даже не знаю почему я так сразу не сделал и парился непонятно сколько с JS.

Jetro Скорее всего нужно было закинуть код скрипта на html страницу и там уже его выполнять. Я так делаю на ютубе что бы получить доступ к flash плееру.

Подскажите, есть ли скрипт, форматирующий номера сотовых операторов в формате 89********* в удобный вид, например, +7(9**)***-**-** ?
у нас на форумах стоит скрипт, автоматически форматирующий номера в неудобный вид (для поиска - ipb :(). Сам написать не могу — не разбираюсь в регэкспах, да и как поделить цельный номер в куски — тоже без понятия.

Однако, сварганил. Имеет смысл выкладывать его на usercripts или здесь ввиду его (скрипта) топорности и узконаправленности?

bodrox
да выложите на userscripts.org только название и описание на английском нормальное сделайте - вдруг кому пригодится.

не, уж лучше только тут. с английским плохо. да и выкладывать стыдновато такой костыль :).

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name    phonenumber-линкификатор
// @version    1.0
// @namespace    http://userscripts.org/scripts/show/88068
// @include     http://*
// @exclude    http://acid3.acidtests.org/*
// ==/UserScript==

document.addEventListener('DOMContentLoaded',function(){
// Регэксп для телефонов - первые два общие, последний для слитных номеров в РФ 
// надеюсь никто не смотрит странички про сложение 11 значных чисел и текстовые url с +№ в них? :)
const numberRegex = /(\+?\d{1,3}[\s\-]*\(\s*\d{2,4}\s*\)([\s\-]*\d{2,4}){2,3})|(\+?\d{0,3}[\s\(]+\d{2,3}[\s\)]+((\d{2,3}\-\d{2}\-\d{2})|(\d{2,3}\-\d{4})))|((\+7|^8)[\s\-\(]{0,2}\d{3}[\)\s\-]{0,2}\d{2,3}\-?\d{2}-?\d{2})/g;

function phonenumberformat(t) {
    // Замена номера 89********* в удобный вид +7(9**)***-**-**
    var fixedNum;
    fixedNum = '+7(' + String(t).charAt(1) + String(t).charAt(2) + String(t).charAt(3) + ')'
                 + String(t).charAt(4) + String(t).charAt(5) + String(t).charAt(6) + '-'
                 + String(t).charAt(7) + String(t).charAt(8) + '-'
                 + String(t).charAt(9) + String(t).charAt(10);
    return fixedNum;
}

// теги, в содержимом которых может быть номер телефона
var allowedParents = [ 'a', 'abbr', 'acronym', 'address', 'b', 'bdo', 'big', 'blockquote', 'body', 'caption', 'center', 'cite', 'dd', 'del', 'div', 'dfn', 'dt', 'em', 'fieldset', 'font', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'i', 'iframe', 'ins', 'kdb', 'li', 'nobr', 'object', 'pre', 'p', 'q', 'samp', 'small', 'span', 'strike', 's', 'strong', 'sub', 'sup', 'td', 'th', 'tt', 'u', 'var' ];

// иконка phonenumber
var phonenumberImage = 'data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN2obAjRmU0R06BeDvDn2AEAAAAAAAAAALpnAP8AAAAAumcA/wAAAAAAAAAAumcA/7pnAP8AAAAAAAAAAM+MPwq1eTJOxoY0PM+MOhO8oG0EAAAAAAAAAAC6ZwD/AAAAALpnAP8AAAAAumcA/wAAAAAAAAAAAAAAANupbgXKhDOlu3sw/7F0Le/Tl1Bs0JBICAAAAAAAAAAAumcA/7pnAP+6ZwD/AAAAALpnAP8AAAAAAAAAAAAAAADYoWFjtXYt/dGRRv+7ey//sXQs+9GPQmLOijwBAAAAALpnAP8AAAAAumcA/wAAAAC6ZwD/AAAAAAAAAAAAAAAAzoo6xLJ0Lf/KhDP+0ZFH/ciDMv+aZSfi0I5CEgAAAAC6ZwD/AAAAALpnAP8AAAAAAAAAALpnAP+6ZwD/AAAAAMqEM9zAfTD/r3Is/8J/Mf/KhDP/uHguw9qnbA369e0CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNiDfCzYc2/8WBMf+rcCv6iFkindKTSRwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0pNKS8qEM+3QjkH/zYc24rN1LTUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRkUZXyoQz9dCOQf/RkUfH3KRrIJh1AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANadWmzNhzb9zoo6/9COQsjYnVwpwIBQAwAAAAAAAAAArXErFKdtKmLCfzFCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1JlUf86KOv/Oijv/zYo60s+PQz8AAAAAAAAAAMJ/MZqzdS35uHgu7c2GNKbjvI4bAAAAAAAAAAAAAAAAAAAAAN+zfwHQj0KFzos7/s2KO//LhDLl0ZBEUtSZVBPKhDPbzoo8/7h4Lv+wcyz/zoo8twAAAAAAAAAAAAAAAAAAAAAAAAAA26lvAdGPRIHOizv60pJI/86KOvS6ei/OnWYn9dCOQv/QjkL9yoQz/rV2Lf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA05ZPZM6JOenSlEz/05VO/8J/Mf+obir+zoo6/dGRRv+4eC7+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIgzI30I5CqM6KOv/Tlk//z4w//7h4Lv+obir6xYExdwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANCPRAq3eC5EtXYti7h4LqywcyyRpWwpPgAAAAAAAAAAw1kAAINXAAADFwAAAVcAAAFZAAAA/wAAA/8AAAf/AACB/wAAwMcAAODBAADgAQAA8AEAAPwBAAD+AQAA/wMAAA==';

var xpath = '//text()[(parent::' + allowedParents.join(' or parent::') + ')]';
var candidates = document.evaluate(xpath, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);

for (var cnd = null, i = 0; (cnd = candidates.snapshotItem(i)); i++) {
    if (numberRegex.test(cnd.nodeValue)) {
        var span = document.createElement('span');
        var source = cnd.nodeValue;
        
        cnd.parentNode.replaceChild(span, cnd);
    
        numberRegex.lastIndex = 0;
        for (var match = null, lastLastIndex = 0; (match = numberRegex.exec(source)); ) {
            span.appendChild(document.createTextNode(source.substring(lastLastIndex, match.index)));
            
            var img = document.createElement('img');
            img.setAttribute('alt','phonenumber');
            img.setAttribute('title', 'phonenumber');
            img.setAttribute('style', 'vertical-align:top; margin-right: 4px;');
            img.setAttribute('src', phonenumberImage);

            var a = document.createElement('a');
//            a.setAttribute('style', 'vertical-align:middle;');
            a.appendChild(document.createTextNode(phonenumberformat(match[0])));

            span.appendChild(img);
            span.appendChild(a);
    
            lastLastIndex = numberRegex.lastIndex;
        }
    
        span.appendChild(document.createTextNode(source.substring(lastLastIndex)));
        span.normalize();
    }
}
}, false);

При попытке изменить скрипт, в блокноте открывается пустая страница. Как сделать, что бы открывался скрипт?
http://i027.radikal.ru/1105/3d/eac67bd918bc.jpg

Skarm пишет:

стоит ли на лягать на скрипты или одноимённые аддоны юзать?

Скрипт всегда запускается только после загрузки страницы, а адон ведет себя так, как написал его автор, т.е. вполне может замедлять загрузку страниц.

P.S.
По-уму, вобще желательно создать отдельную тему касательно скриптов.

Raf-9600 пишет:

Так как темы про Scriprish почему-то до сих пор не создали.....

Raf-9600
Scriptish - менеджер скриптов для Firefox :angel:

Крошка Ру
Благодарю, перенес сообщение туда.

Установил сегодня FF 5.0 и GM не подгружает скрипты. Меню аддона доступно, можно покавыряться в настройках, но сами скрипты не работают. Версия GM 0.9.5. Поделитесь рабочей версией.

:::: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0

Sergik1 ,всё что могу предложить - попробуйте вместо Greasemonkey Scriptish - менеджер скриптов для Firefox (пост №30 - прямая ссылка на исправленную версию) :)

Спасибо за отзыв, но с Scriptish та же ситуация - скрипты не срабатывают, хотя визуально расширение работает, меню открывается, можно включить/выключить скрипт.
:/

Sergik1 все скрипты? а у меня в [nightly] 7.0a1 работают :sick: .... или просто скрипты другие :angel:......может только в [firefox] 5.0 так?

Да, абсолютно все :(  Попробую сейчас на чистом профиле, но всё равно сомнительно. Ведь 2 отдельных расширения для скриптов такое выдают... позже отпишусь.

П.С. Да, так и есть, на новом профиле тоже скрипты не срабатывают. Похоже скрипты не ассоциируются с адресом страницы для которой они написаны, т.е. не знают, что им нужно в данный момент отработать.

Вот скрины, показан код скрипта, он для страницы Гугла и собственно скрин меню scriptish при открытой странице Гугла. Скрип т не подгружается.

http://img812.imageshack.us/img812/1596/21389251.th.png

http://img98.imageshack.us/img98/9213/28596409.th.png

Sergik1 , у меня из шести установленных:
Google Classic
Google Image Basic
Pure Reader
Google Reader Full Feed Mod
Youtube Prevent Autoplay
только один не работает >
Google Reader Colored
:)

По логу ошибок в консоли на jabber конференции поддержки сказали, что в ФФ 5.0 изменили js движок и теперь некоторые скрипты не будут работать, их нужно допиливать. Дело не в расширениях.

Подскажите пожалуйста такую штуку.
Есть страница на сайте.
там есть всплывающее окошко, в котором идет информация и кнопка "Обновить".
Можно ли как то сделать, Чтобы эта кнопка автоматом нажималась ну скажем раз в 5-10 секунд.

П.С. Обновление страницы не подходит.

Skorii
Ответ положительный.

CoolCmd
Подскажите пожалуйста как это сделать.
Какие данные о странице предоставить?
Вот так это выглядит (ссылку на картинку в спойлер засунул)

скрытый текст
http://s2.ipicture.ru/uploads/20110720/Ru42LLMd.jpg

Уважаемые езнатоки JavaScript, помогите решить задачку...
Имеется страница, на ней около сотни div-ов, но автор страницы очень уж исхитрил и создал такой код:

Выделить код

Код:

<div class="obs_confirm" _enab="8">......</div>

Код этот работает, но я что-то никак не соображу как можно отловить в Greasemonkey нужный мне див и сделать по нему click или послать ему onMouseOver. У каждого дива этого класса есть атрибут "_enab="N" ", где N число от 0 до 93. Поскольку не силен в JavaScript, то всю репу уже расчесал себе, в попытках нагуглить хоть что-то.

document.querySelector("[_enab=8]")

https://developer.mozilla.org/En/DOM/Document.querySelector
https://developer.mozilla.org/en/DOM/document.createEvent#Example

07-09-2011 15:23:55
Впрочем, если на странице подключен jQuery, то всё ещё проще
jQuery('[_enab=8]').click()

Что-то я ничего не понимаю... Весь уже измучился :(
Уже создал тестовую страничку с самым примитивным содержанием, но никак не могу заставить скрипт найти элемент...
Вот страничка:

Выделить код

Код:

<html>
<head>
</head>
<body>
<div id="test-div-id">NO</div>
</body>
</html>

Вот скрипт:

Выделить код

Код:

window.checkdiv = function () {
    ADS = document.getElementById('test-div-id');
    if (ADS != null) {
        alert('Find');
    } else {
        alert('None');
    }
}

checkdiv();

Вообще не выдает алерта... ЧЯДНТ?

http://wiki.greasespot.net/Avoid_Common … easemonkey
Для конкретно этого примера:

Выделить код

Код:

function checkdiv() { ... }
checkdiv();

И лучше var ADS = ...

Пробовал так же как Вы советуете - не видит элементов ни в какую. :(

тут у нас новый раздел появился, куда планируется перенести обсуждение скриптов.
так вот в нём сейчас структура такая, что планируется там все топики держать вперемешку.
Я открыл голосование с предложением разделить на подразделы, отделив скрипты, стили и кб в разные разделы, и чтоб в каждом из них было ещё по 2 подраздела: для тем-обсуждений готовых, например, скриптов и для тем-вопросов (типа "а как сделать такой-то скрипт?")
Прошу всех проголосовать.

iDev.Pi пишет:

тут у нас новый раздел появился, куда планируется перенести обсуждение скриптов.так вот в нём сейчас структура такая, что планируется там все топики держать вперемешку.Я открыл голосование с предложением разделить на подразделы, отделив скрипты, стили и кб в разные разделы, и чтоб в каждом из них было ещё по 2 подраздела: для тем-обсуждений готовых, например, скриптов и для тем-вопросов (типа "а как сделать такой-то скрипт?")Прошу всех проголосовать.

Спасибо Unghost-у, наконец-то право голосовать есть у всех.

Я не понял, коллеги, Greasemonkey  работает на Seamonkey 2.4.1  или нет ?

Коллеги,напишите кто ставил скрипт :/ (позволяет просматривать достижения пользователя в игре "Тюряга" ВКОНТАКТЕ)
Version: 0.91 [firefox]

http://userscripts.org/scripts/show/113099

Это случаем не троян,не ворует и отсылает пассы???

Подскажите скрипт для вставки определенного текста в нужные поля ввода на конкретном сайте.

скрытый текст
Вот этот сайт
автоматом вставить текст в три поля для ввода

okkamas_knife
спасибо, но из-за одного сайта неохота ставить лишнее дополнение...

Inko7
Вом автоматическую авторизацию надо чтоли сделать? :?

megane
ага
не прибегая к сторонним дополнениям

Inko7
Вообще то есть дополнение Secury Login, которое для этого предназначено. Оно для всех сайтов подходит и всегда пароль посмотреть  можно и даже несколько акаунтов одного сайта позволяет авторизовывать.
Конкретно с этим сайтом надо проверять, потому что там три поля для ввода.

эсть CB кнопка Auto Login может ее можно как то приспасобить,
в инициализацию;

скрытый текст

Выделить код

Код:

var apps,srcUrl,MItem,mPop;

function onLoad(uname,pass)
{
alert("Please wait a sec..");
form_fill(uname,pass);
}

function loadPage(evt)
{
    var url=evt.target.value;
    var name=evt.target.name;
    var pass=evt.target.pass;
    gBrowser.selectedTab=gBrowser.addTab(url);
    function load(){
         if (content.document.title.length>0)
         {
        onLoad(name,pass);
         } else {
         setTimeout(load.bind(this),1000);
         }
    };
    load();
}

function submit_form()
{
    submit_it(gBrowser.contentDocument.getElementsByTagName("BUTTON"));
    submit_it(gBrowser.contentDocument.getElementsByTagName("INPUT"));    
}

function submit_it(obj)
{
for(var i=0;i<obj.length;i++)
    {
        if(obj[i].type=="submit")
        {
            obj[i].click();
            break;
        }
        if(obj[i].type!="hidden" && (obj[i].type=="button"))
            {
                var n=obj[i].name.toLowerCase();
                var v=obj[i].value.toLowerCase();
        if(n.match("submit") || n.match("login") ||v.match("submit") ||v.match("login")||n.match("sign") ||v.match("sign"))
            {
                obj[i].click();
                break;
            }    
            }
    }
}
function form_fill(username,passwd)
{
    var obj= gBrowser.contentDocument.getElementsByTagName("INPUT");
    for(var i=0;i<obj.length;i++)
    {
        if(obj[i].type!="hidden")
        {
            if(obj[i].type=="text")
            {
                var n=obj[i].name.toLowerCase();
                if(n.match("name") || n.match("login")||n.match("mail"))
                obj[i].value=username;
            }
            if(obj[i].type=="password")
            obj[i].value=passwd;
    
        }
    }
submit_form();
}

function getIndex(opt,value)
{
    for( var i=0;i<opt.length;i++)
    {
        if(opt[i].text==value)
        return i;
    }
}

//------menu items--------
var Img=this.image;
apps=new Array;
apps.push(['Yahoo','http://www.yahoomail.com','username','pass',Img]);
apps.push(['Gmail','http://www.gmail.com','username','pass',Img]);
apps.push(['Rediff','http://www.rediffmail.com','username','pass',Img]);
apps.push(['separator']);




//------/menu items-------

MItem=function(value){
  var mItem=document.createElement('menuitem');
  mItem.setAttribute('label',apps[value] [0]);
  mItem.value = apps[value] [1];
  mItem.name= apps[value] [2];
  mItem.pass= apps[value] [3];
  mItem.tooltipText = apps[value] [0];
  mItem.setAttribute('class','menuitem-iconic bookmark-item');
 mItem.setAttribute('image',apps[value] [1]);
  return mItem;
}



//this.orient="vertical";
mPop=document.createElement('menupopup');
for (var i=0;i<apps.length;i++){
 if (apps[i] =='separator'){
  mPop.appendChild(document.createElement('menuseparator'));
 }else{
  mPop.appendChild(MItem(i));
 }
}

this.siteGo=function(evt)
{
loadPage(evt);
}



this.appendChild(mPop);
this.type = "menu-button";
this.tooltipText=this.label;
this.setAttribute("oncommand", "this.siteGo(event);");
this.value="http://yahoomail.com";
this.name="username";
this.pass="pass";

Только у меня greasmonkey на [firefox]7 и [firefox]9 заставляет браузеры дико жрать процессорные ресурсы, вплоть о 50%?

bunda1
я мало что понимаю в кодах... :(

Был рабочий, редко используемый старый скрипт с такими строчками:

var w = window.wrappedJSObject; // для доступа к скриптам основной страницы
var g = w.someframe; // для доступа к скриптам страницы в iFrame someframe

Затем достаточно было написать, например var v = g.somevalue; и все работало. Чтобы получить данные основной страницы из фрейма в свою очередь, хватало w.parent; где w, тот же враппер но фрейма, изнутри.

Ну вот, не знаю что обновилось, или GM, или сайт для которого он был написан, но халява обломилась. Сначала вообще не мог понять почему все перестало работать, потому что инспекция кодов сайта ничего не показала: все по-старому.

Когда разобрался, методом научного самотыка, оказалось надо теперь делать так:

var w = window.wrappedJSObject;
var g = w.someframe.wrappedJSObject;

и для топового окна из фрейма

var p = w.parent.wrappedJSObject;

Смотрел новости по обновлениям ГМ, искал отголоски в инете: пусто. Вопрос риторический: что это могло быть?

Оказывается надо делать канонически. Сначала получить реф на окно фрейма, например по имени:

var iFrame = document.getElementsByName(iFrameName)[0].contentWindow;

а потом уже заварпить: var wFrame = iFrame.wrappedJSObject;

Теоретически первое можно сделать через window.frames[iFrameName] - не проверял.

Кто шарит в скриптах, есть скрипт очень хороший Mouseover Popup Image Viewer, который прекрасно работает с картинками с fastpic.ru но только если они в jpg, а если там png то не хочет показывать, как можно поправить скрипт чтобы работал с png?
Уточню, если ссылка имеет вид http://fastpic.ru/view/32/2011/1008/a70870514407d82319fc45112242fab9.png.html то тогда не грузит, а если вида http://i32.fastpic.ru/big/2011/1008/33/2ffe66e3a209dfd74eeea3421430a233.png то тогда нормально.

Как оказалось дело не в png формате, а в том, что скрипт не работает на рутрэкере, даже если скриншоты в jpg:/ что делать?

Как заблокировать выполнение этого скрипта

Выделить код

Код:

var a = new Date;
    if (18 == a.getDate() && 0 == a.getMonth() && 2012 == a.getFullYear()) {
        window.location = "http://sopastrike.com/strike";
    }

Kamui пишет:

есть скрипт очень хороший Mouseover Popup Image Viewer, который прекрасно работает с картинками

создал тему по нему, для оформления темы нужна помощь знающих JS - http://forum.mozilla-russia.org/viewtopic.php?id=53339

Есть такой сайт MTS - Ребенок под присмотром. При авторизации на нем, FF не предлагает сохранить для него пароль. Поэтому решил проблему скриптом:

Выделить код

Код:

// ==UserScript==
// @name           MTS Poisk - Autologin
// @include        http://www.poisk.mts.com.ua/MTS_WEB/*

document.getElementById("loginUsername").value = "мойлогин";
document.getElementById("loginPassword").value = "мойпароль";

Осталась только одна проблемка: как кнопку "Вход" автоматом нажать?
Пробовал и так:

Выделить код

Код:

document.getElementById("DefButton").click();

и так:

Выделить код

Код:

document.getElementById("DefButton").submit();

не получается...
Знающие люди, подскажите!

Inko7
У меня все работает, только я там не зареген и пишет, что не верные логи и пароль.

22-01-2012 14:45:58
http://s018.radikal.ru/i505/1201/a7/f720ca79e777.jpg

Выделить код

Код:

// ==UserScript==
// @name Autologin
// @namespace      http://www.poisk.mts.com.ua
// @include http://www.poisk.mts.com.ua/MTS_WEB/*
// @description    Autologin on http://www.poisk.mts.com.ua
document.getElementById("loginUsername").value = "мойлогин";
document.getElementById("loginPassword").value = "мойпароль";
document.getElementById('DefButton').click();

Void Dragon
Прошу прощения! Действительно все работает, нужно было перезапустить браузер.
Спасибо! :beer:

Greasemonkey скрипты работают только, если на странице включены скрипты или всегда?

Void Dragon
Всегда, но с отключенными скриптами не работают функции setTimeout() и setInterval(). Возможно, какие-то еще.

Комрады, есть ли скрипты, меняющие

Выделить код

Код:

<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">

на windows-1251?

bodrox

Выделить код

Код:

// ==UserScript==
// @name my.site.windows-1251
// @namespace      http://www.my.site
// @include http://www.my.site*
// @description    my.site = windows-1251
document.getElementsByTagName("META").getElementsByAttribute("content", "text/html; charset=iso-8859-1").charset = "text/html; charset=windows-1251";

Попробуй. Но getElementsByAttribute(charset, value) не стандартная, не знаю как Greasemonkey поддерживает её.

Добавлено: Ошибся, поправил.

22-01-2012 22:58:27
Но это не для всех сайтов наверное, тут ищет по точному соответствию значения атрибута, чтобы было универсальным надо поиск подстроки использовать. Т.к. иногда могут быть лишние пробелы.

Void Dragon пишет:

bodrox
Но это не для всех сайтов наверное, тут ищет по точному соответствию значения атрибута, чтобы было универсальным надо поиск подстроки использовать. Т.к. иногда могут быть лишние пробелы.

Спасибо. Не хочет только. Извините, забыл сказать, что это для

Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

хотел. Письма в кириллице приходят, каждый раз вручную надо править. Смотрю в исходном коде, всё та же кодировка указана.

bodrox
Извини, может не в тему, но чем Charset Switcher не устраивает?

Inko7 пишет:

bodroxИзвини, может не в тему, но чем Charset Switcher не устраивает?

Спасибо, а я искал «codepage» :(.

День добрый!
уже неделю сижу вот с такой вот задачей...
есть кнопка...

Выделить код

Код:

<div class="center-buttons">
<a href="#" id="list_num" onclick="return list();" class="orange-btn-wide">
<img src="/images/img/img.png" alt="" height="60" width="60" /><span>Список</span></a>
</div>

Пытаюсь через GM автоматически на нее кликнуть...

Выделить код

Код:

var ButtomTAG = document.getElementById("list_num").getElementsByTagName("span");
for (var i = 0; i < ButtomTAG.length; i++) {
    if (ButtomTAG[i].firstChild.textContent == "Список") {
        ButtomTAG[i].click();
        break;
    }
}

и ни фига :(
самое интересное что с кнопками типа:

Выделить код

Код:

<div id="Part_1">
<div data-tutorial='2'>
<a class="button grey6" href="javascript:rand(0);"><span>Перейти</span><em></em></a>
</div>
</div>

такой скрипт пашет...
как быть? выручайте :)

Попробуй через jQuery


var GM_JQ = document.createElement('script');
GM_JQ.src = 'http://jquery.com/src/jquery-latest.js';
GM_JQ.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(GM_JQ);
function GM_wait() {
    if(typeof unsafeWindow.jQuery == 'undefined') { window.setTimeout(GM_wait,100); }
    else { $ = unsafeWindow.jQuery; letsJQuery(); }
}
GM_wait();
function letsJQuery() {


$('#list_num').click();

}

questman
чет ни фига :)
на странице походу уже подключен QJ

Benos пишет:

questmanчет ни фига на странице походу уже подключен QJ
                    Отредактировано Benos (Вчера 20:10:22)

Если подключен то вторую строчку кода удалите или за комментируйте.
А почему не работает не знаю.Я таким кодом пользуюсь очень часто и всё работает нормально.
Попробуйте клик засунуть в

setTimeout(function(){
    $('#list_num').click();
},1000);

questman
что то ни как...
я так понимаю этот код означает что JQ включен

Выделить код

Код:

 <script src="/Scripts/jquery-1.6.2.min.js" type="text/javascript"></script>

но в тестовом варианте даже элементарный код не пашет...

Выделить код

Код:

$(document).ready(function(){ alert('тест')}); 

заметил еще одну особенность, если подключать

Выделить код

Код:

GM_JQ.src = 'http://jquery.com/src/jquery-latest.js';

то на сайте перестает работать кнопка

var GM_JQ = document.createElement('script');
GM_JQ.src = 'http://jquery.com/src/jquery-latest.js';//Подключаем\отключаем jQuery с офф-сайта или можно локально в base64
GM_JQ.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(GM_JQ);
function GM_wait() {
    if(typeof unsafeWindow.jQuery == 'undefined') { window.setTimeout(GM_wait,100); }
    else { $ = unsafeWindow.jQuery; letsJQuery(); }
}
GM_wait();
function letsJQuery() {

     Свой код здесь
   
}

Всё пашет без проблем.

вы правы... код пашет... но есть беда... :(
в таком варианте все работает на ура:

Выделить код

Код:

var GM_JQ = document.createElement('script');
GM_JQ.src = 'http://jquery.com/src/jquery-latest.js';//Подключаем\отключаем jQuery с офф-сайта или можно локально в base64
GM_JQ.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(GM_JQ);

function GM_wait() {
    if(typeof unsafeWindow.jQuery == 'undefined') { window.setTimeout(GM_wait,100); }
    else { $ = unsafeWindow.jQuery; letsJQuery(); }
}

GM_wait();

function letsJQuery() {
    $(document).ready(function(){ alert('тест')}); 
}

а в таком ни фига не пашет :(

Выделить код

Код:

var GM_JQ = document.createElement('script');
GM_JQ.src = 'http://jquery.com/src/jquery-latest.js';//Подключаем\отключаем jQuery с офф-сайта или можно локально в base64
GM_JQ.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(GM_JQ);

function GM_wait() {
    if(typeof unsafeWindow.jQuery == 'undefined') { window.setTimeout(GM_wait,100); }
    else { $ = unsafeWindow.jQuery; letsJQuery(); }
}

GM_wait();

function letsJQuery() {
    $(document).ready(function(){$('#list_num').click();});
}

я так думаю ошибка в строке с кликом.

function letsJQuery() {
$(document).ready(function(){ //А это зачем?

    $('#list_num').click();

});

}
function letsJQuery(){//Вот так

   $('#list_num').click();

}

Вот мои примеры

$('div.form_value img').click();

$('input#captcha, #captcha_login').focus();

setTimeout(function() {
$('button:contains(Continue)').click();
  }, 1000
);

Ну и так далее.

questman
Запахало... переписал код цикла проверки подключения JQ...
в начале проверяем , а потом подключаем если надо...  и все за пахало... спасибо! :)

Пример если нужно кому :)

Выделить код

Код:

if(unsafeWindow.jQuery == 'undefined'){
    var GM_JQ=document.createElement('script');
    GM_JQ.src='http://jquery.com/src/jquery-latest.js';
    GM_JQ.type='text/javascript';
    document.getElementsByTagName('head')[0].appendChild(GM_JQ);
    function GM_wait(){
        if(typeof unsafeWindow.jQuery == 'undefined'){
            window.setTimeout(GM_wait,100);
        }else{
            $=unsafeWindow.jQuery;
            GM_JQ_fun();
        }
     }
    GM_wait();
}else{
    $=unsafeWindow.jQuery;
    GM_JQ_fun();
}

function GM_JQ_fun()
{
  setTimeout(function() { $('#list_num').click(); }, 2000 );
}

можно ли и как отключить обновление выбранного скрипта?

Запахало... переписал код цикла проверки подключения JQ...
в начале проверяем , а потом подключаем если надо...  и все за пахало... спасибо!

Ну вот классно!
Согласитесь что использования jQuery для отбора всякого рода кнопок и других элементов намного удобнее чем чистый JavaScript.
Я не пожалел что предложил вам использовать jQuery.Переписанный вами код подключения библиотеки оказался мне чрезвычайно
полезным.
Так что это вам спасибо!

vitalii201

можно ли и как отключить обновление выбранного скрипта?

Зайти в управление скриптами (в about:addons), выбрать нужный скрипт и отключить автообновление через контекстное меню.

vitalii201 пишет:

можно ли и как отключить обновление выбранного скрипта?

ПКМ по скрипту - убрать галку авто обновление. Не?

MySh пишет:

через контекстное меню

Void Dragon

всё равно при "Проверить обновления" висит "Обновление дополнений".

vitalii201
Где чего висит? :rolleyes:

MySh пишет:

Где чего

в about:addons при ...

скрытый текст
http://img141.imageshack.us/img141/1959/image002lc.png

есть скрипт последние upd которого не удачны. автору писал и т.д. поставил старый, работающий вариант(от2011.12.18). но теперь при общей проверке дополнений процесс не заканчивается.
скрытый текст
http://img208.imageshack.us/img208/8746/image003k.png

День добрый!
возник такой вопрос...
где можно посмотреть описание символов представленных в виде...

Выделить код

Код:

...\u003e\r\n\t\u003cdiv class=\"content\"\u003e\r\n\t\t\u003...

а то чет их в коде страницы до дури... есть мне не знакомые)))

Benos
Возможно вам окажется полезным http://habrahabr.ru/blogs/infosecurity/137071/

Но вообще это похоже юникод, т.е. \u003e обозначает какой-то символ. \n - это перенос строки \t и \r тоже что-то подобное.

06-02-2012 00:14:54
У меня почему-то не работают некоторые скрипты. Например:
https://userscripts.org/scripts/show/6482
и
https://forum.mozilla-russia.org/viewtopic.php?id=53349

Проверит кто?

Void Dragon пишет:

Benos
Возможно вам окажется полезным http://habrahabr.ru/blogs/infosecurity/137071/
Но вообще это похоже юникод, т.е. \u003e обозначает какой-то символ. \n - это перенос строки \t и \r тоже что-то подобное.

то что это юникод эт я понял.. и судя по коду пару сиволом вычислил... но там еще символы есть... и вот что это за сиволы.. фиг знает :)

vitalii201

в about:addons при ...

Странно, у меня такого нет.

А если в самом скрипте попробовать @updateURL поменять?

MySh пишет:

А если в самом скрипте попробовать @updateURL поменять?

что-то – нет. та ладно, я то знаю из-за чего это. обновляется-то всё без проблем.
upd: а, да. разобрался. спасибо.

Всем день добрый!
столкнулся еще с одной задачей... брюсь уже 4 день.. что то в пустую :(
есть страница... на ней есть кнопка... при определенных обстоятельствах... после клика по ней всплывает окошко... с информацией об ошибке... вот как это окошко выцепить ума не приложу... в коде станицы ни чего не видать...
когда окно активно... добавляется только этот код...

Выделить код

Код:

jQuery(document).ready(function () {jQuery.sitecore.messaging.processErrors( [{"error":"list.activ"}]);});

Benos пишет:

Всем день добрый!столкнулся еще с одной задачей... брюсь уже 4 день.. что то в пустую есть страница... на ней есть кнопка... при определенных обстоятельствах... после клика по ней всплывает окошко... с информацией об ошибке... вот как это окошко выцепить ума не приложу... в коде станицы ни чего не видать...когда окно активно... добавляется только этот код...
Код:

Выделить код

Код:

jQuery(document).ready(function () {jQuery.sitecore.messaging.processErrors( [{"error":"list.activ"}]);}); 

вопрос решил... коряво но решил))
теперь другой вопрос :(
добавляю свою кнопку на сайт...

Выделить код

Код:

var MenuTAG = document.getElementById('menu')
var MenuBUT = document.createElement('li');
    MenuBUT.innerHTML = '<a href="javascript:test();">MyButtom</a>';
    MenuTAG.appendChild(MenuBUT);

function test(){
    location.href="http://www.yandex.ru/";
   //alert('TEST');
}

Функцию ТЕСТ не вызывает? как быть? в чем не прав? подскажите пжл.

Я попробовал у меня всё работает.
И вот так тоже работает.

var MenuTAG = document.getElementById('menu')
var MenuBUT = document.createElement('li');
    MenuBUT.innerHTML = '<a onclick="test()" href="#">MyButtom</a>';
    MenuTAG.appendChild(MenuBUT);
function test(){
   alert('TEST');
};

questman
у меня чет не пашет :)
ладно буду думать :)
код user.js

Выделить код

Код:

// ==UserScript==
// @name          MyButtom(TEST)
// @description   MyButtom(TEST)
// @include       http://www.ya.ru/*
// @version       1.0
// ==/UserScript==

var MenuTAG = document.getElementById('head');
var MenuBUT = document.createElement('li');
    MenuBUT.innerHTML = '<a href="#" onclick="test()">MyButtom</a>';
    MenuTAG.appendChild(MenuBUT);

function test(){
   alert('TEST');
};

Benos пишет:

у меня чет не пашет :)

И не должно: http://wiki.greasespot.net/XPCNativeWrappers

Infocatcher пишет:

Benos пишет:

у меня чет не пашет :)

И не должно: http://wiki.greasespot.net/XPCNativeWrappers

а про комментировать можно чуть чуть?
я не очень силен в JS...
буду очень благодарен :)

Benos пишет:

а про комментировать можно чуть чуть?

Infocatcher имеет ввиду что вот так будет правильно.

var MenuTAG = document.getElementById('menu')
var MenuBUT = document.createElement('li');
MenuBUT.innerHTML = '<a href="#">MyButtom</a>';
    MenuBUT.addEventListener("click", test, false);
    MenuTAG.appendChild(MenuBUT);
   
    function test(event) {
     
     alert('Работает');
   
}

12-02-2012 12:48:01

Benos пишет:

var MenuTAG = document.getElementById('head');

var MenuBUT = document.createElement('li');
MenuBUT.innerHTML = '<a href="#">MyButton</a>';
document.getElementsByTagName('body')[0].appendChild(MenuBUT);

понял где не прав... но правда пока не понял почему :)
спасибо :)

Benos пишет:

но правда пока не понял почему :)

Со стороны страницы функции, объявленные в Greasemonkey, не видны:

Выделить код

Код:

function f1() {
    alert(0);
}
window.f2 = function() {
    alert(1);
};
unsafeWindow.f3 = function() {
    alert(3);
};

var a = document.createElement("a");
a.href = "javascript: alert(typeof f1 + ' ' + typeof f2 + ' ' + typeof f3);"; // undefined undefined function
a.appendChild(document.createTextNode("<test>"));
document.body.appendChild(a);

Но использовать unsafeWindow небезопасно – теоретически страница сможет получить доступ к GM_* функциям.

Portable Firefox 10 + Gracemonkey. При нажатии на кнопку "Установить скрипт" ничего не происходит(( Переустановка расширения не помогает. WTF?

Altalion
Скрипт вообще не появляется в установленных и что? Любой?

Кстати, может кто знает, почему в последних версиях GM перестал появляться тултип об успешной установке скрипта? Раньше было удобней...

Inko7 пишет:

Скрипт вообще не появляется в установленных и что? Любой?

да, любой скрипт. в таскменеджере висят процессы скриптов, которые тужатся в попытках установиться

кто-нибудь может подсказать, как скриптом автоматом нажимать кнопку закрытия банера в рамблер-почте?
http://s019.radikal.ru/i610/1203/ce/b62747a7245bt.jpg
Сейчас сам банер блокируется Адблоком, а пустое место с кнопкой остается, пока на нее не нажать.

Inko7
а просто скрыть её адблоком - не?

iDev.Pi
саму кнопку скрыть можно, а как место "схлопнуть"?
ведь по нажатию по кнопочке вся область под банер убирается, а область для писем раздвигается на всю ширину

Inko7
указать не на саму кнопку, а на её родителя.

iDev.Pi
у меня так не получается :(
область писем не расширяется на освободившееся место

Inko7 пишет:

кто-нибудь может подсказать, как скриптом автоматом нажимать кнопку закрытия баннера в рамблер-почте?

Я такие вопросы уже давно решаю так:
В скрипт встраиваю jQuery после фаирбагом нахожу нужный элемент и пишу например такой код $(#element).click();

questman пишет:

В скрипт встраиваю jQuery

для меня это темный лес
но все равно спасибо, почитаю для общего развития

Привет всем!
У меня такой вопрос.
Вот смотрите существуют определённые события в javascript.Такие как клик,наведение курсора,нажатие клавиши,загрузка страницы,скролинг и так далее.
При наступлении этих событий происходит какое то действие.Но как сделать не стандартное событие? Например есть блок div на странице,через определённое время он становится полупрозрачным.
Вот становление блока полупрозрачным это и есть собственно нестандартное событие.Как сделать так чтобы выполнилось действие после того как блок стал полупрозрачным?
Или например был блок и через некоторый промежуток времени внутри него появился ещё какой то объект.Как поймать это событие и повесить на него действие?
Может кто знает? Или может поделится ссылками на инфу?

questman пишет:

Как сделать так чтобы выполнилось действие после того как блок стал полупрозрачным?
Или например был блок и через некоторый промежуток времени внутри него появился ещё какой то объект.Как поймать это событие и повесить на него действие?

https://developer.mozilla.org/en/DOM/DO … DOM_events
Смена стиля – или DOMAttrModified, или DOMNodeInserted/DOMNodeRemoved – смотря каким образом задается стиль.
Добавление узлов – DOMNodeInserted.

Infocatcher пишет:

https://developer.mozilla.org/en/DOM/DO … DOM_events
Смена стиля – или DOMAttrModified, или DOMNodeInserted/DOMNodeRemoved – смотря каким образом задается стиль.
Добавление узлов – DOMNodeInserted.

О спасибо!
А то я как обычно слышу звон но не знаю где он.Не знаю с чего начинать поиски.
Искал "собственные события","тригер" и так далее.Но ни чего внятного естественно не нашёл.

Ребята кто нибудь знает как при помощи Greasemonkey изменить существующие скрипты на страницах?
Прямо вклинится и поменять значения переменных на свои например.
Я умею такой трюк проделывать с функциями но вот тот код который не заключён в функции мне не подвластен.
Может кто что посоветует?

как поменять meta charset странице по средствам только userscript'а или javascripta (можно с библиотеками)?

questman пишет:

Ребята кто нибудь знает как при помощи Greasemonkey изменить существующие скрипты на страницах?
Прямо вклинится и поменять значения переменных на свои например.
Я умею такой трюк проделывать с функциями но вот тот код который не заключён в функции мне не подвластен.
Может кто что посоветует?

Так как я разобрался с этим то отвечу сам себе.Мало ли может кому пригодится.

location.href = "javascript:void(window.переменная = 'значение'"; 

22-05-2012 09:28:34

Krechet2013 пишет:

как поменять meta charset странице по средствам только userscript'а или javascripta (можно с библиотеками)?

Я правда не пробовал.
meta это же тоже тэг.
Найти его на странице и поменять его значение атрибутов на нужные.

questman unsafeWindow.переменная = значение;

questman пишет:

Я умею такой трюк проделывать с функциями но вот тот код который не заключён в функции мне не подвластен.

ищи нужный текст в тэгах script и его изменяй.

CoolCmd пишет:

questman unsafeWindow.переменная = значение;

О!
Покороче будет.Надо попробовать.
Спасибо!

questman
тег меняется но страница не обновлется - не перерендеривается
И мало того если воткнуть скрипт перед началом страницы и забубенить meta сразу после скрипта (или даже взаместо него в jquery это тупо $([html-dom код]); ), то всё равно страница в прежней кодировке, при этом присутсвуют 2 meta тэга и нужный идёт первым, но кодировка всё равно с другого. Проверял в оффлайне - выгрузив страницу - то есть из htasccess ничего не регламентирует charset. Получается браузер просто перескакивает только что созданное meta.

А тема актуальная не только для меня - ещё тут с пяток парней наберётся кому такой трюк нужен.

Есть идея забабахать скрипт перелопачивающий все видимые объекты страницы и менющий кодировки на нужную, но дело это тёмное и мне не по зубам.

Krechet2013 пишет:

тег меняется но страница не обновлется - не перерендеривается
И мало того если воткнуть скрипт перед началом страницы и забубенить meta сразу после скрипта (или даже взаместо него в jquery это тупо $([html-dom код]); ), то всё равно страница в прежней кодировке, при этом присутсвуют 2 meta тэга и нужный идёт первым, но кодировка всё равно с другого. Проверял в оффлайне - выгрузив страницу - то есть из htasccess ничего не регламентирует charset. Получается браузер просто перескакивает только что созданное meta.

А тема актуальная не только для меня - ещё тут с пяток парней наберётся кому такой трюк нужен.

Есть идея забабахать скрипт перелопачивающий все видимые объекты страницы и менющий кодировки на нужную, но дело это тёмное и мне не по зубам.

Гризманки выполняет все скрипты в своей песочнице.
А что если прилепить скрипт непосредственно обойдя песочницу.
Например так:

var script = document.createElement('script');
script.setAttribute("type", "application/javascript");
script.textContent = source;
document.body.appendChild(script);
document.body.removeChild(script);
}
contentEval("свой код,например документГетЭлементБайТэгНэйм и так далее");

Помогите, плиз, в GM слетели все скрипты (тупо не видит их)

Такое уже было один раз на другом компе, тогда помогло отключение/включение GM с перезагрузкой браузера
Сейчас ничего не помогает

Скриптов с настройками очень много, заново качать и настраивать это убиться можно.
Как исправить?

Atos пишет:

Скриптов с настройками очень много, заново качать и настраивать это убиться можно.
Как исправить?

скрипты лежат в папке профиля gm_scripts - папку скопировать - GM удалить - поставить заново - скрипты вернуть обратно
должно сработать ящитаю

01-06-2012 19:41:10
или просто переустановить GM

спасибо, помогло вроде

Тема перенесена из форума «Обсуждение расширений» в форум «Скрипты».

Что случилось с GreaseMonkey? Почему я раньше просто открывал свои скрипты в браузере и они устанавливались, а теперь открываю, и ничего не происходит?

Как нормально установить свои скрипты?

26-08-2012 08:37:18
Почему раньше был нормальный список скриптов, а теперь чёрт знает что, и ничего не работает? На какой скрипт не нажму "изменить", всё не работает. Б... ! Испоганили GreaseMonkey уроды.

Можно как-то восстановить предыдущую версию GreaseMonkey?

Minor пишет:

уроды

Кто? Авторы столь любимого расширения?

Minor пишет:

Можно как-то восстановить предыдущую версию GreaseMonkey?

https://addons.mozilla.org/ru/firefox/a … /versions/

Как нормально установить свои скрипты в проклятой новой версии GreaseMonkey?

Почему когда я теперь их открываю они не устанавливаются как раньше?

Minor пишет:

Как нормально установить свои скрипты в проклятой новой версии GreaseMonkey?Почему когда я теперь их открываю они не устанавливаются как раньше?

Версия 1.0 Выпущено August 24, 2012 269.3 KB Работает с Firefox 14.0 и выше

Подскажите мне не понимающему, что такого критического изменилось в версии 1.0, что перестал работать следующий скрипт:
оригинал с userscripts.org > ссылка
тот, которым пользуюсь (я его немного подправил под себя) > ссылка1 или ссылка2
Скрипт глючит на некоторых сайтах - например ломает рамблер-почту, на сайте korrespondent.net не работаю кнопки в комментариях, не показывает webui для utorrent и т.д.
Что это может быть???

okkamas_knife пишет:

middlemouse.scrollbarPosition ставишь в true и скм по скроллбару в нужном месте

этим пользуюсь, но и с полупрозрачными кнопочками на страничке тоже было неплохо
жаль, что скорее всего придется отказаться от скрипта ...
и главное в чем заковыка? такая фигня появилась только в GM 1.0

Inko7 пишет:

этим пользуюсь, но и с полупрозрачными кнопочками на страничке тоже было неплохо
жаль, что скорее всего придется отказаться от скрипта ...
и главное в чем заковыка? такая фигня появилась только в GM 1.0

А консоль что пишет?

Kamui
при заходе на рамблер-почту только одна ошибка (и кучка предупреждений):

Метка времени: 27.08.2012 15:21:14
Ошибка: TypeError: $(t.tmpl._Folder).on is not a function
Источник: http://s.rambler.ru/000070/js/global.min.js
Строка: 1036

и вот такое на экране:
http://s019.radikal.ru/i629/1208/15/6d2ac7153820t.jpg

но и с полупрозрачными кнопочками на страничке тоже было неплохо
жаль, что скорее всего придется отказаться от скрипта ...

у меня работает

27-08-2012 16:52:20
на Версия 1.0

27-08-2012 16:56:01
вот работает Top bottom for Firefox

LongLogin пишет:

вот работает Top bottom for Firefox

Это ж тот же самый скрипт, только версией поменьше. Но и с ним у меня та же фигня:
http://s019.radikal.ru/i606/1208/64/add6d771cc4dt.jpg

Inko7
Так может и не скрипт виноват или не он один, а конфликт какой-то?

Kamui
тут уже я не знаю :|
буду смотреть

Есть такая проблема с Google Reader. Фиды используемые только мной (сделаны в Yahoo Pipes и Feed43) редко обновляются автоматически, хотя если нажать кнопку Обновить (#viewer-refresh) появятся новые записи. Можно ли сделать скрипт, который при выборе фида в левой панельке (либо мышкой либо сочетаниями клавиш) будет его обновлять, автоматически нажимая кнопку Обновить? А то надоело каждый раз жмякать кнопочку. Может кто помочь?

humnmind
Кнопка R обновляет текущую ленту, если хотите посмотреть все клавиши, нажмите Shift+/(?) в английской раскладке :)

Kamui
Хрен редьки не слаще :) Теперь вместо лишних кликов лишние нажатия клавиши.

humnmind т.е. у тебя не появляется вверху желтая надпись "загрузко"?

CoolCmd
Надпись появляется. Проблема в другом - ридер редко обновляет фиды с небольшим числом подписчиков (а у меня половина фидов, которые использую только я т.е. 1 подписчик). Пример: в фиде за день появилось 30 новостей и если ридер открыть вечером то будет только 10-15 записей. Остальные в ридере появятся только завтра, если конечно же ни нажать кнопку Обновить, тогда он их подгрузит (что кстати говорит о том что он их до этого уже всосал - пруф (хотя не), но они почему то не появляются в ридере). Гугл кстати это и советует. Проще говоря: интервал автообновления/автопоявления таких фидов в ридере - 2-3 раза день. Поэтому приходится каждый раз жмякать кнопку Обновить у каждого такого фида. И я в этом не одинок: линк1, линк2, линк3.

Нашел вроде пару решений (линк1, линк2), но они из другой области и что с ними делать не знаю (ось - винда).

линк2
bash в виндоус - Поиск в Google

В общем лучше этого ничего не нашел.

Помогите разобраться с написанием скриптов...
По сути имееться объект с событием onclick="ShowAllReleases('x','y','z');return false;" надо из этого вытащить x, y, z и заменить действие на открытие во фрейме странички с адресом url.com/page.php?c=x&s=y&e=z
Как это можно реализовать...

xenus пишет:

Помогите разобраться с написанием скриптов...

По всей видимости x,y,z нужно вытаскивать при помощи метода splice() или substring()
А грузить во фрейм просто подставив атрибут src

А как подменить действие кнопки на свое и вообще каким методо осуществить поиск кнопки?

Несколько вопросов:

1) Может ли Greasemonkey скрипт влиять на браузер Firefox аналогично расширению? В каких пределах? Менять интерфейс, настройки и т.п.?

2) Можно ли с помощью greasemonkey скрипта менять настройки браузера, например те, что в about:config?

3) Если about:config можно менять, то можно ли это делать не для всего  браузера, а только для конкретного таба/вебстранцы/домена?

4) Можно ли вообще в Firefox (с помощью полноценного расширения) менять настройки about:config для конкретного таба, а не глобально?

okkamas_knife пишет:

Почемучкин пишет:

4) Можно ли вообще в Firefox (с помощью полноценного расширения) менять настройки about:config для конкретного таба, а не глобально?

4 да

А при помощи чего (чуть подробнее)?

Почемучкин пишет:

А с помощью чего?

может стоит реализовать приватный режим в вкладке (вместо отдельного профиля)

Почемучкин пишет:

3) Если about:config можно менять, то можно ли это делать не для всего  браузера, а только для конкретного таба/вебстранцы/домена?

4) Можно ли вообще в Firefox (с помощью полноценного расширения) менять настройки about:config для конкретного таба, а не глобально?

Есть такие расширения. А чего вы так прицепились к about:config? :)

При перезагрузке компа слетели все настройки скриптов GM (хотя сами скрипты работают). Есть бэкап папки с Мозилловским профилем , также некоторое время назад экспортировал профиль со всеми скриптами и настройками на другой комп. Но полностью профиль не хочется ниоткуда восстанавливать, другие последние изменения могут убиться... Как бы настройки только восстановить? Где они физически хранятся?

Atos

Atos пишет:

Где они физически хранятся?

тут "%APPDATA%\Mozilla\Firefox\Profiles\xxxxxxxx.default\gm_scripts\config.xml", где xxxxxxxx - уникальная последовательность символов, для каждого своя, default - профиль по умолчянию

Посмотрел, в config.xml нужных настроек нет, видимо скрипты GM сохраняют их в своих переменных, когда позволяет на определённых страницах создавать и запоминать наборы данных. Где ещё посмотреть можно?

Atos
Обычно в about:config хранятся, ищите по слову "greasemonkey", далее через точку идет название скрипта, дальше через точку настройка, т.е.:
greasemonkey.userscript.nastroyka
Это не точное название, т.к. я использую UserScriptLoader, там выглядит так:
UserScriptLoader.scriptival.igcc/Google Currency Converter.from
Выделенное название скрипта.

Kamui пишет:

Обычно в about:config хранятся

Kamui, спасибо, нашёл )

потом посмотрел место физического хранения... кроме файла prefs.js   обнаружились ещё файлы prefs-1.js, prefs-2.js, prefs-3.js, prefs-4.js...
вот в последнем из них и обнаружились затёршиеся настройки. скопировал нужный кусок файла, всё встало

Непонятно только, почему Мозилла сама не предлагала возможность восстановления, если уж произошёл сбой :(

Хотя нет, оказывается, не всё встало :(  У одного из скриптов настройки так и не работают, в about:config имена их появились, а значения пустые, хотя в prefs.js и имена и значения заданы. Что за ерунда? :(

Atos пишет:

Хотя нет, оказывается, не всё встало :(  У одного из скриптов настройки так и не работают, в about:config имена их появились, а значения пустые, хотя в prefs.js и имена и значения заданы. Что за ерунда? :(

Так вносите настройки не в pref.js, а в about:config.

Ну как бы есть разница, скопировать одним куском, или долго и уныло копипастить несколько десятков строчек, следя, чтобы в нужные переменные значения вставлять...
и хочется разобраться всё-таки, в чём проблема, и почему возникла только с переменными одного из нескольких скриптов

Atos пишет:

и хочется разобраться всё-таки, в чём проблема, и почему возникла только с переменными одного из нескольких скриптов

А кто его знает, может в Greasemonkey какой-то идентификатор есть, который поменялся.

Картина маслом: пробую забить парочку значений от балды с помощью скрипта, в about:config они появляются, но в pref.js всё ещё стоят абсолютно другие значения! (Закрытие/открытие браузера ничего не меняет!!)

И самое интересное, что проблема в конце концов решилась заменой файла pref.js на файл, принесённый с другого компа.

Получается, часть значений Мозилла брала из pref.js,  часть ещё откуда-то?? но после замены файла опять все значения стала брать из него, как и полагается...  Вот что это был за глюк, просто интересно уже...

Подскажите пожалуйста. Как на скрыть верхнюю часть с картинкой на lostfilm.tv и заодно на newstudiogroup.tv? Заранее спасибо.

okkamas_knife
Спасибо, но на newstudiogroup.tv не работает данный способ.

Может кто помочь, нужно сделать скрипт, который при заходе на определенную страницу, будет в форме Select выбирать значение, в форму Input вводить значение и потом переключать фокус на Textarea, как это все можно сделать?

Kamui
дай код страницы

CoolCmd пишет:

дай код страницы

https://sendsms.megafon.ru/

Код нужного блока

Выделить код

Код:

<form id="sendsms" action="/sms.action" method="post" enctype="multipart/form-data" style="width:510px;">
<input type="hidden" name="charcheck" value="йцукен"  />
<input type="hidden" name="lang"      value=""  />
<select name="prefix" tabindex='1' class="choose-number">
  <option value="7926" name="prefix_f">+7 926</option>
  <option value="7925" name="prefix_f">+7 495(925*)</option>
<option value="7921" name="prefix_f">+7 812(921*)</option>
<option value="7931" name="prefix_f">+7 931</option>
<option value="7920" name="prefix_f">+7 920</option>
<option value="7922" name="prefix_f">+7 922</option>
<option value="7923" name="prefix_f">+7 923</option>
<option value="7924" name="prefix_f">+7 924</option>
<option value="7927" name="prefix_f">+7 927</option>
<option value="7928" name="prefix_f">+7 928</option>
<option value="7937" name="prefix_f">+7 937</option>
<option value="7929" name="prefix_f">+7 929</option>
<option value="7930" name="prefix_f">+7 930</option>
<option value="7932" name="prefix_f">+7 932</option>
<option value="7938" name="prefix_f">+7 938</option>
<option value="7933" name="prefix_f">+7 933</option>
<option value="7939" name="prefix_f">+7 939</option>
</select><input tabindex='2' maxlength="7" size="9" name="addr" type="text" id="addr" pp:pattern="[0-9]{7}" notice="Введите номер телефона абонента" placeholder="Номер телефона абонента" value="" class="telephone-subscriber" />
<p class="symbolcounter"><span id="availablelen">150</span> символов осталось</p>
<textarea tabindex='3' rows="4" cols="29" name="message" id="message" pp:pattern="string" maxlength="150" notice="Введите сообщение (не более 150 символов)" placeholder="Ваше сообщение"></textarea>

Kamui

скрытый текст

Выделить код

Код:

// ==UserScript==
// @id             send-sms-megafuck
// @name           Послать SMS через Мегафон
// @namespace      CoolCmd
// @homepage       https://sendsms.megafon.ru/
// @include        https://sendsms.megafon.ru/*
// @grant          none
// @noframes
// ==/UserScript==

if (window.self == window.top)
{
    document.getElementsByName('prefix')[0].value = '7939';
    document.getElementsByName('addr')[0].value = '1234567';
    document.getElementById('message').focus();
}


можно сделать проще: сохранить страницу на диске и прописать в html нужные значения.

самый интересный вопрос - как отключить капчу, а то вводить лениво. т.е. что слать в recaptcha_challenge_field и recaptcha_response_field?...

CoolCmd
Спасибо, работает :) а если каптчу убрать, так вообще здорово будет ;)

Kamui
я тут немного погуглил. recaptcha не поломана. так что опознавай слова для google сам.

Поддерживается ли пользовательскими скриптами в // @include регулярные выражения?
Например мне нужно чтобы срабатывал на http://4pda.ru/forum/index.php?showtopic=424863
но не срабатывал на http://4pda.ru/forum/index.php?showtopic=424863&view=findpost&p=19060721
т.е. по идее нужно поставить $ в конце, чтобы обозначить конец строки, но сработает ли это?

Kamui
http://wiki.greasespot.net/Include_and_ … xpressions

Плюс всегда можно отфильтровать лишнее уже в самом скрипте.

06-02-2013 19:51:47

Kamui пишет:

чтобы срабатывал на http://4pda.ru/forum/index.php?showtopic=424863

Всегда 424863?
Тогда просто без * в конце вписать.

Infocatcher пишет:

http://wiki.greasespot.net/Include_and_ … xpressions

Почитал, попробовал в GM, получилось.

Infocatcher пишет:

Всегда 424863?

Нет, там не всегда, это номер топика, решил это вот так: [0-9]*$

Infocatcher пишет:

Плюс всегда можно отфильтровать лишнее уже в самом скрипте.

Использую UserScriptLoader и похоже он не поддерживает регулярки в include, придется делать так, не подскажешь как реализовать?
Код скрипта простой:

Выделить код

Код:

function findPos(obj) {
    var curtop = 0;
    if (obj.offsetParent) {
        do {
            curtop += obj.offsetTop;
        } while (obj = obj.offsetParent);
    return [curtop];
    }
}
window.scroll(0,findPos(document.getElementById("topicmenu-options")));

Kamui
Ну так в самом начале добавить что-нибудь вроде

Выделить код

Код:

if(!/^http:\/\/4pda\.ru\/forum\/index\.php\?showtopic=\d+$/.test(location.href))
    return;

Если return не работает, а выдает ошибку, то код лучше завернуть в функцию, а то переменные могут на страницу попасть (смотря как запускается).

И не проще

Выделить код

Код:

document.getElementById("topicmenu-options").scrollIntoView();

?

06-02-2013 21:50:16
И есть специально обученный getBoundingClientRect().

Выделить код

Код:

document.getElementById("topicmenu-options").scrollIntoView();

Спасибо, так и сделал :)

Infocatcher пишет:

И не проще

Просто код я не сам писал, то что нашел и смог использовать.

Есть такой старенький замечательный скриптик для показа превью картинок при наведении на ссылку:

Выделить код

Код:

// ==UserScript==
// @name           Image previewer
// @author         Awesumness
// @Notes          Enjoy.
// @include        *
// @require        http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
// ==/UserScript==
var url;
var image;
var x;
var y;
var w;
var h;
var hflip;

$(document).ready(function() {
  setTimeout(fixedYet,2000);
});

var fixedYet = function() {
  $("a[href*='.png'],a[href*='.gif'],a[href*='.jpg'],a[href*='.jpeg']")
  .removeAttr("title")
  .hover(imaGen)
  .mousemove(imaGen)
  .mouseout( function() {
    image.css({"display":"none"});
  });
}

function imaGen(e) {
  url = $(this).attr("href");
  image = $("body > img.awesumImgPre[src='" + url + "']");

  if ( image.length < 1 ){
    $("body").append("<img class='awesumImgPre' src='" + url + "'/>");
    image = $("body > img.awesumImgPre[src='" + url + "']");
    image.css({
    "position":"fixed",
    "z-index":"9001",
    "max-width":window.innerWidth/2,
    "max-height":window.innerHeight/2});
  }

  image.css({"display":"block"});

  x = e.pageX + 20 - window.pageXOffset;
  y = e.pageY + 20 - window.pageYOffset;
  flipit();


}




function flipit(){
    w = parseInt(image.css("width"));
    h = parseInt(image.css("height"));
    if(w == 0){
      setTimeout(flipit,100);
    }else{
      hflip = false;

      if(x+w+20 > window.innerWidth){
        x-=w;
        hflip = true;
      }
      if(y+h+20 > window.innerHeight){
        y-=h;
        if(hflip)
          x-=40;
      } 
      image.css({
      "left":x,
      "top":y});
    }
}

Он начинает работать, когда страница полностью загружена и её части больше не обновляются.
Можно ли что-то изменить в скрипте, чтобы он все-таки обрабатывал ссылки, которые появились при частичном обновлении страницы (например, в чатах) или после подгрузки страницы через собственные механизмы или с помощью AutoPagerize?
Если такое возможно, то будет просто замечательно.

Возможно кому то покажется мой вопрос смешным, но мне хотелось бы все же узнать ответ.
В [firefox] установлено приложение Greasemonkey. Через это приложение на открывающиеся сайты подключается пользовательские скрипты. Внимание вопрос: Те скрипты которые от компании сайта(оригинальные) загружаться будут? Или сразу же сработает пользовательский? Или быть может сначала загрузиться скрипт сайтовский, а потом уже его перекроет пользовательский? (Прошу извинения за такое объяснение).

gapi
Насколько я понимаю из FAQ Greasemonkey, то скрипты работают параллельно, но пользовательские имеют несколько боле высокий приоритет для выполнения некоторых операций:

Greasemonkey lets you add JavaScript code (called "user scripts") to any web page, which will run when its HTML code has loaded. Compared to writing extensions, user scripts often offer a light-weight alternative, requiring no browser restart on user script installation nor removal, and work with the common DOM API familiar to any web developer (with somewhat elevated privileges for doing cross domain XMLHttpRequest requests and storing small portions of private data). User scripts work more or less like bookmarklets automatically invoked for any URLs matching one or more glob patterns.

Zaycoff Спасибо. Ответ получил.

Возник следующий вопрос: А можно ли как-то заблокировать скрипты "оригинальные", что бы только пользовательские работали? (user.js или userContent.css - это не оно?)

gapi пишет:

А можно ли как-то заблокировать скрипты "оригинальные", что бы только пользовательские работали?

NoScript - тотальная блокировка скриптов.

Adblock Plus (в окне нажимаете Ctrl+Shift+V и создаёте правила запрещающие загрузку ненужных скриптов)

Zaycoff пишет:

gapi пишет:

А можно ли как-то заблокировать скрипты "оригинальные", что бы только пользовательские работали?

NoScript - тотальная блокировка скриптов.

Adblock Plus (в окне нажимаете Ctrl+Shift+V и создаёте правила запрещающие загрузку ненужных скриптов)

Установленны оба этих дополнения. Но ведь NoScript и пользовательские скрипты тогда блокирует?!(Или я ошибаюсь?)

gapi пишет:

Но ведь NoScript и пользовательские скрипты тогда блокирует?!(Или я ошибаюсь?)

Не блокирует... :rolleyes:

Есть ли скрипт который подключал плеер на сайте "вконтакте" для воспроизведения видео и музыки в HTML5?
Может кому-то интересно такое соорудить?

gapi пишет:

Есть ли скрипт который подключал плеер на сайте "вконтакте" для воспроизведения видео и музыки в HTML5?

vkontakte html5 music

Zaycoff пишет:

gapi пишет:

Есть ли скрипт который подключал плеер на сайте "вконтакте" для воспроизведения видео и музыки в HTML5?

vkontakte html5 music

что то он не работает у меня. а у Вас?

gapi пишет:

что то он не работает у меня. а у Вас?

Без понятия, соцсетями не увлекаюсь :music:

Попробуйте написать автору (открыть дискуссию на их форуме), судя по всему он русскоговорящий, может допилит...

http://userscripts.org/topics/96845?page=2 На литебите что-то подкрутили - перестало пахать - кто нить нашел ещё обходные пути?

Нужно блокировать запрос на подтверждение выхода и получение сайтом даты.
http://javascript.about.com/library/blexitblock.htm

https://userscripts.org/scripts/show/164775

Не работает первый. И не слишком ли простой второй? Проверить первый можо зайдя на вики, править статью и не кликая отправить попытаться закрыть вкладку.

geczu пишет:

Не работает первый.

в статье ведь написано, что не все используют onbeforeunload. возможно вики использует событие beforeunload. что бы его отключить, нужно перехватить и вызвать stopPropagation.

geczu пишет:

И не слишком ли простой второй?

лучше вернуть какуюнить реальную дату, например 01.01.1980.
Only XT users know that January 1, 1980 was a Tuesday. :D

CoolCmd
Не знаете скрипта для предотвращения beforeunload?

А дату лучше вернуть текущую, только подправленную под США или Гринвич. Только вопрос. Если превести есть функции приведения даты к другой форме и не меняется ли она при приведении?

Можно ли реализовать возможность, чтобы при открытии любого видео youtube в ссылку добавлялось no-cache и соответственно загрузка шла по новой ссылке?
Подробнее: Disable caching YouTube videos

Посоны, а давайте вместе бороться с каками в поисковой выдаче поисковиков (янделя и гугеля)?
Когда, например, в Яндекс вводишь запрос в виде вопроса, то в поисковой выдаче очень много результатов, ведущих на фродовые дорвеи (fraud doorway, мошеннический одностраничный сайт), маскирующиеся под форумы. Они существовали и раньше, но сейчас я заметил, что их научились делать по динамичным шаблонам, вы только взгляните на вот эти сайты и увидите сходства и различия:


Отличий у таких сайтов от нормальных - я заметил всего два:
1. У них у всех одинаковая фавиконка
2. Возможно, такие сайты есть не уже и не только в ru-зоне, но мне пока попадались только такие. А вот формат URL:

Выделить код

Код:

%имясайта%.ru/%вопрос%.html

Юзернеймы знающие js, создайте защиту от таких сайтов, пожалуйста.

Список @include правил
// @include     http://www.google.*/search?*
// @include     https://www.google.*/search?*
// @include     http://www.google.*/webhp?*
// @include     https://www.google.*/webhp?*
// @include     http://www.google.*/#*q=*
// @include     https://www.google.*/#*q=*
// @include     http://www.google.*/
// @include     https://www.google.*/
// @include     https://encrypted.google.com/search?*
// @include     https://encrypted.google.com/#*q=*
// @include     http://yandex.*/yandsearch?*
// @include     https://yandex.*/yandsearch?*

1. В поисковой выдаче яндекса отображаются фавиконки сайтов. Можно фильтровать все, с такой фавиконкой: https://a248.e.akamai.net/camo.github.com/60453e85687ea0e4fb12911ee8aee3b987a67aa7/687474703a2f2f6b616b757374616e6f76697476696c6b752e72752f66617669636f6e2e69636f, но
а. в выдаче гугла нет фавиконок, вариант подходит только для яндекса.
б. иногда в выдаче яндекса фавиконки у некоторых сайтов не отображаются совсем.
в. ради ускорения загрузки и облегчения веса страницы - яндекс собирает все фавиконки в единый файл.
2. Можно делать regex проверку урла сайта, но думаю, что будет много ложных срабатываний.
3. Можно приделать в скрипт возможность отправки куда-то урла сайта, чтобы юзеры скрипта могли рапортовать о новых найденных фрод-дорвеях, а кто-то будет собирать этот список, проверять и пополнять.

У кого-нибудь есть ещё идеи по этому поводу?

03-05-2013 15:45:12
Гм, а в гугле таких сайтов чего-то я пока совсем не вижу: сравните выдачу яндекса и гугеля по этому запросу:
скрытый текст
как удалить слово из словаря Т9 android inurl:kak

Просто гуглом пользоватся. Раз яндекс выдаёт каки.

iDev.Pi пишет:

в выдаче гугла нет фавиконок

GoogleMonkeyR for Greasemonkey
http://savepic.ru/4480044m.jpg

Faviconize Google (nested icons) for Greasemonkey

Pony_Smile_Pack пишет:

Просто гуглом пользоватся. Раз яндекс выдаёт каки.

Я, пожалуй, буду пользоваться и Яндексом и Гуглом, а каки победить хочется.

Pony_Smile_Pack пишет:

GoogleMonkeyR for Greasemonkey

Я не люблю столь злые скрипты: это же сколько дополнительных запросов он будет генерировать на массу различных сайтов и насколько это замедлит загрузку страницы.
Нет, спасибо.

На всякий случай, пожаловался Яндексу.

iDev.Pi пишет:

На всякий случай, пожаловался Яндексу.

Ответа не прислали, но похоже сайты забанили в поисковой выдаче

Помогите довести до ума букмарклет show hidden elemens. Нужно, чтобы не открывалась пустая страница со словом "block"

Выделить код

Код:

javascript:var tags=document.getElementsByTagName("*");for(var tg in tags){try{if(tags[tg].style.display=="none")tags[tg].style.display="block";}catch(e){}}

Это делается оборачиванием кода в анонимную функцию:  javascript: (function () {...})();

Спасибо, Lex1! :blush:

Есть код

Выделить код

Код:

var cont = document.getElementById('id').innerHTML; 
var win = open('','', 'width=400, height=600');
win.document.write(cont);

Как можно сделать, чтобы в созданном окне содержимое cont отображалось в виде кода HTML?

А можно просто в textarea запихнуть ничего не преобразуя. Ещё есть тег pre. Наверно, и другое всякое есть.

Ferguss114 пишет:

Как можно сделать, чтобы в созданном окне содержимое cont отображалось в виде кода HTML?

Выделить код

Код:

var p = win.document.createElement('p');
p.textContent = cont;
win.document.body.appendChild(p);

Конечно желательно вариант попроще, когда не надо ничего преобразовывать. Спасибо всем, буду пробовать по всякому, что лучше подойдёт.


Может ещё кто подскажет - как симулировать mouse click в searchbar? Не на кнопке search-go-button, а именно в поле для ввода текста.
Я гуглил, но не нашёл ничего подходящего. Мне надо чтоб только подставить координаты и оно работало.

Фокус это я знаю, но мне надо именно клик. По сути два клика - один выделяет всё, второй сбрасывает выделение, курсор при этом стоит в строке поиска.
Ну допустим, .focus() мне и выделит весь текст, а как потом убрать выделение и оставить курсор в поле?

Это можно запросто сделать в Autohotkey, но я хотел бы делать это мышиным жестом. Как подружить Autohotkey и FireGestures - понятия не имею...

okkamas_knife пишет:

добавь перед фокусом
sb. value = '';
Если бы всё было так просто, я бы сразу это сделал! :)
Мне не надо удалять текст из строки поиска, надо чтобы он был готов для редактирования - выделения нет и на тексте курсор.

Ferguss114

Выделить код

Код:

sb.focus();
sb.setSelectionRange(0, 0);

CoolCmd пишет:

sb.focus();
sb.setSelectionRange(0, 0);

Этот код выделяет всё  в строке поиска и на этом останавливаетя. Выделение не сбрасывается.

Ferguss114 здесь тебе подскажут. greasemonkey не работает в кишках лесы.

Как узнать индекс элемента в массиве (допустим индекс формы в массиве document.forms) по её id или по имени?

rbfyec
array.indexOf()
Только document.forms – не массив.

Выделить код

Код:

Array.indexOf(document.forms, document.getElementById("post")); // Только в Firefox
Array.prototype.indexOf.call(document.forms, document.getElementById("post")); // Все современные браузеры

Спасибо, Infocatcher

Только document.forms – не массив

Конечно имелось в виду document.forms[] :)

А как  то же самое проделать с  элементом, вложенным в форму?

rbfyec пишет:

А как  то же самое проделать с  элементом, вложенным в форму?

form -> HTMLFormElement -> HTMLFormElement.elements

Infocatcher пишет:

form -> HTMLFormElement -> HTMLFormElement.elements

Спасибо, Infocatcher



Я хочу получить список всех потомков некоего элемента. Делаю

Выделить код

Код:

x=content.document.getElementById('id').getElementsByTagName("*");
for (i=0;i<x.length;i++)
{
list = x[i].nodeName;
}

Получаю его, а как это вывести  на экран в читабельном виде? Я пробовал создать окно в теле цикла, но получается - сколько повторений делает цикл, столько и окон открывается.

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

rbfyec
Во-первых, если делать присвоение без объявления переменной через var, будет создана глобальная переменная.
Во-вторых, в Greasemonkey не нужен content, потому как content === window.
Пример для этой страницы:

Выделить код

Код:

var list = [];
var nodes = document.getElementById("post").getElementsByTagName("*");
for(var i = 0, l = nodes.length; i < l; ++i)
    list.push(nodes[i].nodeName);
alert(list.join("\n"));

Альтернативный вариант:

Выделить код

Код:

var nodes = document.getElementById("post").getElementsByTagName("*");
var list = Array.map(nodes, function(node) {
    return node.nodeName;
});
alert(list.join("\n"));

Для поддержки других браузеров надо заменить «Array.map» на «Array.prototype.map.call».

Ну, и вместо alert() можно использовать Веб-консоль и console.log().

Infocatcher пишет:

rbfyecВо-первых, если делать присвоение без объявления переменной через var, будет создана глобальная переменная.

Я это знаю.
А что, глобальная переменная - это плохо?

rbfyec пишет:

А что, глобальная переменная - это плохо?

В некоторых браузерах (и, если изменится реализация Greasemonkey, то и в Firefox) можно сломать встроенные в страницу скрипты.
Поэтому обычно делают

Выделить код

Код:

(function() {
// Тут какой-то код
})();

Есть сниппет для получения всех атрибутов элемента.

Выделить код

Код:

Array.prototype.slice.call(document.getElementById("myId").attributes).forEach(function(item) {
    console.log(item.name + ': '+ item.value);
});

Я его слегка переделал для ФФ - заменил Array.prototype.slice.call на Array.slice. Хотелось бы выводить полученный список алертом, но чтоб было как в консоли красиво, парами, атрибут - значение.


И вопрос: я открываю консоль (не Firebug, а встроенную) и у меня там надпись " API ведения логов веб-консоли (console.log, console.info, console.warn, console.error) было отключено скриптом на этой странице."
Как  мне его включить?

rbfyec пишет:

Хотелось бы выводить полученный список алертом, но чтоб было как в консоли красиво, парами, атрибут - значение.

Выделить код

Код:

var attrs = Array.map(document.getElementById("myId").attributes, function(item) {
    return item.name + ': '+ item.value;
});
alert(attrs.join("\n"));

rbfyec пишет:

И вопрос: я открываю консоль (не Firebug, а встроенную) и у меня там надпись " API ведения логов веб-консоли (console.log, console.info, console.warn, console.error) было отключено скриптом на этой странице."
Как  мне его включить?

Если до этого открывался Firebug, то закрыть его и обновить страницу.
Если страница создает свою переменную console, то никак, наверное.

Infocatcher пишет:

Выделить код

Код:

var attrs = Array.map(document.getElementById("myId").attributes, function(item) {
    return item.name + ': '+ item.value;
});
alert(attrs.join("\n"))

У меня постоянно даёт ошибку: SyntaxError: missing variable name :|

rbfyec пишет:

У меня постоянно даёт ошибку: SyntaxError: missing variable name :|

У меня работает.
В какой строке?

После перезапуска браузера всё заработало.
Infocatcher, спасибо большое!! :)

Интересно есть ли возможность перенести настройки скриптов при создании нового профиля без копирования файла prefs.js? Естественно о переносе строк по одной из этого файла нет и речи, слишком долго и не всегда всё гладко проходит.

SuperUser пишет:

Интересно есть ли возможность перенести настройки скриптов при создании нового профиля без копирования файла prefs.js? Естественно о переносе строк по одной из этого файла нет и речи, слишком долго и не всегда всё гладко проходит.

Перенести папку gm_scripts

voqabuhe пишет:

SuperUser пишет:

Интересно есть ли возможность перенести настройки скриптов при создании нового профиля без копирования файла prefs.js? Естественно о переносе строк по одной из этого файла нет и речи, слишком долго и не всегда всё гладко проходит.

Перенести папку gm_scripts

Пробовали? Перенеслись настройки?

SuperUser пишет:

Естественно о переносе строк по одной из этого файла нет и речи, слишком долго и не всегда всё гладко проходит.

переносить нужно строки, которые начинаются на

Выделить код

Код:

user_pref("extensions.greasemonkey.scriptvals.

они все одним куском в файле лежат. перенести - дело 30 секунд.

CoolCmd пишет:

SuperUser пишет:

Естественно о переносе строк по одной из этого файла нет и речи, слишком долго и не всегда всё гладко проходит.

переносить нужно строки, которые начинаются на

Выделить код

Код:

user_pref("extensions.greasemonkey.scriptvals.

они все одним куском в файле лежат. перенести - дело 30 секунд.

Спасибо. Вроде бы заработало. А там посмотрим.

Как нужно использовать результат работы функции?

Выделить код

Код:

function myFunc(a){
    var x=n;
    var y=m;
    ..............
    ..............
    return [x, y];
}

Я могу посмотреть этот результат: alert(myFunc(a))
Но мне надо не увидеть его, а подставить в другой код (в частности window.scrollTo())

toxa
Для Firefox:

Выделить код

Код:

function myFunc() {
    return [0, 1];
}
var [x, y] = myFunc();
alert("x = " + x + "\ny = " + y);

Не только для Firefox:

Выделить код

Код:

function myFunc() {
    return [0, 1];
}
var arr = myFunc();
var x = arr[0];
var y = arr[1];
alert("x = " + x + "\ny = " + y);

А вообще, лучше откуда-нибудь отсюда начать: http://learn.javascript.ru/

Infocatcher пишет:

А вообще, лучше откуда-нибудь отсюда начать: http://learn.javascript.ru/

Я там часто бываю. Но к сожалению далеко не всё понятно.

Подскажите ещё как сделать, чтобы выражение типа document.images.myImage вставленное в prompt, можно было подставить вместо obj

Выделить код

Код:

obj.src="чего-то там"

toxa пишет:

Подскажите ещё как сделать, чтобы выражение типа document.images.myImage вставленное в prompt, можно было подставить вместо obj

Выделить код

Код:

obj.src="чего-то там"

Зачем такое может понадобиться?
Можно так:

Выделить код

Код:

var str = "document.images.myImage";
var obj = eval(str);
...

Но если это не в тестовых целях, то, скорее всего, что-то не так с логикой скрипта. :)

Infocatcher пишет:

...Но если это не в тестовых целях, то, скорее всего, что-то не так с логикой скрипта.

Да, это было нужно именно  в тестовых целях.
Спасибо большое! :)

Решено.

Я тут спрашивал как создать окно и вставить в него html код, чтобы он отображался именно как код.

Советы, которые мне дали, помогли, но хотелось бы чтоб код выглядел удобочитаемым, "лесенкой". Сейчас всё что удалось добиться - это если я вставляю document.body.innerHTML то выходит "лесенка". А если innerHTML отдельного элемента, код идёт сплошным текстом.

Что можно сделать?

У меня есть скрипт, он выполняет на странице определённое действие. Можно составить условие, чтобы действие НЕ выполнялось, если выскочил alert или confirm или prompt?

Ferguss114
Чтоб код выглядел удобочитаемым, его придётся самостоятельно форматировать. Относительно простая и полноценная реализация может выглядеть так:

скрытый текст

Выделить код

Код:

javascript:(function()
{
  var tab='  ', emptyTags={img:1, br:1, link:1, input:1, hr:1, meta:1}, xml=false, counter=0, showLines=1,
    doc=window.document, loc=window.location, wndFeatures='resizable=yes,scrollbars=yes,location=no', closeTags = '</span></li>';
  
  var openTagNameHead=function(name)
  {
    return '<span class=\'tag\'>&lt;'+name+'';
  };

  var openTagNameFoot=function(xmlemptyTag)
  {
    return (xmlemptyTag?'/':'')+'&gt;</span>';
  };

  var closeTagName=function(name, xmlemptyTag)
  {
    if(xmlemptyTag || emptyTags[name.toLowerCase()]) return '';
    return '<span class=\'tag\'>&lt;/'+name+'&gt;</span>';
  };

  var lineHead=function()
  {
    var lineNumber=counter.toString();
    while(lineNumber.length<3) lineNumber='0'+lineNumber;
    return '<li class=\'line'+(showLines&&((counter++)&1)?' dark\'':'\'')+'><span>';
  };
 
  var escapeHTML=function(str)
  {
    return str.replace(/</g,'&lt;').replace(/>/g,'&gt;');
  };

  var getDoctype=function(doc)
  {
    var doctype=doc.doctype, code='';
    if(doctype)
    {
      code=lineHead()+openTagNameHead('!DOCTYPE')+' <span class=\'attrDoc\'>'+doctype.nodeName+
            (doctype.publicId?' PUBLIC \''+doctype.publicId+'\'':'')+
            (doctype.systemId?'</span></span>'+closeTags+lineHead()+'<span class=\'tag\'><span class=\'attrDoc\'>'+tab+'\''+doctype.systemId+'\'':'')+'</span>'+openTagNameFoot()+closeTags;
    }
    return code;
  };

  var getAttrs=function(ele)
  {
    var attrs=ele.attributes, attr=null, ret='';
    for(var i=0; attr=attrs[i]; i++)
    {
      if(attr.specified && attr.value)
      {
        ret+=' <span class=\'attrTitle\'>'+attr.name+'</span>=<span class=\'attrValue\'>\x22'+escapeHTML(attr.value.replace(/\t/g, tab))+'\x22</span> ';
      }
    }
    return ret;
  };

  var getTextNodeData=function(ele)
  {
    return escapeHTML(ele.nodeValue.replace(/[\n\t\r\u00A0]+ */g,'').replace(/ +/g,' '));
  };

  var getIndent=function(deep)
  {
    var i=0, ret='';
    while(i<deep)
    {
      ret+=tab;
      i++;
    }
    return ret;
  };

  var getLayer=function(ele, deep, singleText)
  {
    var text='', indent=getIndent(deep++);
    switch (ele.nodeType)
    {
      case 1:
      {
        var childs=ele.childNodes, child=null;
        var simple=(childs.length==0)||(childs.length==1 && childs[0].nodeType==3);
        var xmlemptyTag=xml&&childs.length==0;
        var ret=lineHead()+indent+openTagNameHead(ele.nodeName)+getAttrs(ele)+openTagNameFoot(xmlemptyTag);
        if(!simple) ret+=closeTags;
        for(var i=0; child=childs[i]; i++)
        {
          ret+=getLayer(child, deep, !simple&&child.nodeType==3);
        }
        if(simple)
        {
          ret+=(ele.nodeName.toLowerCase()=='textarea'?escapeHTML(ele.value):'')+closeTagName(ele.nodeName, xmlemptyTag)+closeTags;
        }
        else
        {
          ret+=lineHead()+indent+closeTagName(ele.nodeName, xmlemptyTag)+closeTags;
        }
        return ret; 
      }

      case 3:
      {        
        if((text=getTextNodeData(ele)) && singleText) 
        {
          return lineHead()+indent+text+closeTags;
        }
        else
        {
          return text;
        }
      }

      case 4:
      {
        text=getTextNodeData(ele);
        return lineHead()+indent+'<span class=\'cdata\'>&lt;![CDATA[</span>'+text+'<span class=\'cdata\'>]]&gt;</span>'+closeTags;
      }

      case 8:
      {
        text=getTextNodeData(ele);
        return lineHead()+indent+'<span class=\'comment\'>&lt;!--'+text+'--&gt;</span>'+closeTags;
      }

    }

    return ele.nodeType
  };

  var getLiveMarkup=function(selWin)
  {
    var ele, markup='';
    if(selWin)
    {
        var range=selWin.getSelection().getRangeAt(0), pEle=range.commonAncestorContainer;
        if(pEle.nodeType==3 || pEle.nodeType==4)pEle=pEle.parentNode;
        ele=pEle.cloneNode(false);
        ele.appendChild(range.cloneContents());

        var startCon=range.startContainer, endCon=range.endContainer;
        if(startCon != pEle.firstChild || (startCon.nodeType == 3 && range.startOffset != 0))ele.insertBefore(doc.createTextNode('\u2026'), ele.firstChild);
        if(endCon != pEle.lastChild || (endCon.nodeType == 3 && range.endOffset != endCon.nodeValue.length))ele.appendChild(doc.createTextNode('\u2026'));
    }
    else
    {
        markup=getDoctype(doc);
        ele=doc.documentElement;
    };
    markup+=getLayer(ele,0);
    return markup;
  };

  var getSelWin=function(w)
  {
    if(w && w.getSelection){
        if(w.getSelection().toString())return w;
        for(var i = 0, f, r; f = w.frames[i]; i++){
            try{if(r = arguments.callee(f))return r}catch(e){}
        }
    }
  };

    var selWin=getSelWin(window);
    if(selWin){
        doc=selWin.document;
        loc=selWin.location;
        wndFeatures+=',width=800,height=500,left=100,top=100';
    };
    xml=/[a-z]/.test(doc.documentElement.nodeName);
    var markup='<!DOCTYPE html PUBLIC><html><head><title>Snapshot: '+((doc.getElementsByTagName('title').length && escapeHTML(doc.getElementsByTagName('title')[0].text)) || (loc.protocol+'//'+loc.host+loc.pathname))+'</title>'
        +'<style type=\'text/css\'>'
        +'body{padding:0 5px;margin:0;font-family:sans-serif;font-size:.7em;background-color:#FFF;color:#000;}#content{white-space:pre-wrap}ol{color:#999;}span{color:#000}.tag{color:#05F}.attrTitle{color:#E00}.attrValue{color:#C0C}.attrDoc{color:#800080}.comment{color:#008000}.cdata{color:#63D}.line{margin:0;padding:0}.dark{background-color:#FAFAFA}'
        +'</style></head><body>'
        +'<ol id=\'content\'>'+getLiveMarkup(selWin)+'</ol></body></html>';
    var wnd=window.open('about:blank', '_blank', wndFeatures);
    wnd.document.write(markup);
    wnd.document.onkeydown=function(e){if(e.keyCode==27)wnd.close()};
    wnd.document.close();

})()



01-07-2013 13:21:27
Чайник
Если они будут показаны, то скрипт и так остановится. Или нужно определить сам факт их вызова из скрипта на странице? Тогда силами GM, наверное только перезаписывать window.alert и там уже определять.

Lex1 пишет:
Чайник
Если они будут показаны, то скрипт и так остановится.

Я ошибся темой, речь идёт о скрипте не GM, а Firegestures. Но принцип наверное один.
Там в Firegestures если на странице вызван алерт, жест всё равно своё дело делает, а мне это не нужно.
Вот я как раз хочу, чтобы если на экране одно из этих окон (алерт, промпт....), команда не выполнялась.

Ну, вероятно класс, Object.prototype.toString.call(document.commandDispatcher.focusedWindow).slice(8, -1) не должен быть ChromeWindow

Или, что в данном случае кажется похожим - в фокусе должна быть сама страница, а не интерфейс браузера.

Выделить код

Код:

document.commandDispatcher.focusedWindow.top == content

Чайник пишет:

Там в Firegestures если на странице вызван алерт, жест всё равно своё дело делает, а мне это не нужно.

У меня вот так сработало, если в начало кода

Выделить код

Код:

if (gBrowser.selectedBrowser.hasAttribute("tabmodalPromptShowing")) return;

Lex1
Подскажите пожалуйста, как поправить скрипт Google Currency Converter.
Он отправляет строку вида http://www.google.com/ig/calculator?hl=ru&q=ЦЕНАвалюта1=валюта2 и получает страницу с содержимым {lhs: "10 U.S. dollars",rhs: "327.954873 Russian rubles",error: "",icc: true} далее он парсит эту строку и извлекает значения.

Я хочу чтобы отправлялась строка вида http://yandex.ru/yandsearch?country=ru&text=ЦЕНА Валюта1 to Валюта2 и парсил значение элемента TR[class="z-converter__row"] и выводил все как и раньше, возможно ли?

Lex1, работают оба варианта: document.commandDispatcher.focusedWindow!='[object ChromeWindow]' и document.commandDispatcher.focusedWindow.top == content (кстати, а почему вы забраковали первый вариант?)

Dumby, этот вариант тоже работает if (gBrowser.selectedBrowser.hasAttribute("tabmodalPromptShowing")) return; :)

Я теперь и думаю: а какой из них оптимальный?

Чайник
Если нужна именно остановка на алертах, то решение Dumby лучше.

кстати, а почему вы забраковали первый вариант

Он был слишком уж похож на первый.

Lex1 и Dumby

Благодарю! ;)

Kamui
Первое заменяется на

Выделить код

Код:

return 'http://yandex.ru/yandsearch?country=ru&text=' + precio + '+' + monedaFrom + '+' + monedaTo;

Второе на

скрытый текст

Выделить код

Код:

    var convertir = function (){
        var url = urlConvert();
        GM_xmlhttpRequest({
            method: 'GET',
            url: url,
            onload: function(r) {
                var json = r.responseText;

                var doc = document.implementation.createHTMLDocument("");
                doc.documentElement.innerHTML = json;
                json = doc.querySelectorAll('.z-converter__data > strong');

                $('res-igcc').innerHTML = json[0].textContent + ' = ' + json[1].textContent;
                $('monedaFrom').value = GM_getValue('from');
                $('monedaTo').value = GM_getValue('to');
            }
        });
    }

Lex1
Благодарю :beer: наконец-то все заработало :D

Блин, все-таки офигенский скрипт теперь получился, можно практически под любой сайт переделать :D

Есть код

Выделить код

Код:

javascript:open('http://www.url.php','')

Как тут сделать event listener на загрузку страницы?

Чайник добавить http://www.url.php в @include
или

Выделить код

Код:

open('http://www.url.php','').document.addEventListener('DOMContentLoaded', OnDOMContentLoaded, false);

CoolCmd пишет:

Выделить код

Код:

open('http://www.url.php','').document.addEventListener('DOMContentLoaded', OnDOMContentLoaded, false);

Не получается у меня. Я пробую открыть главную страницу форума - запускаю этот код через Scratchpad (просто чтоб попробовать)

Выделить код

Код:

open('http://forum.mozilla-russia.org/index.php','').document.addEventListener('DOMContentLoaded', function(){alert(1)}, false);

Алерт не появляется.

Как можно сделать, чтобы текст в адресной строке выделился и потом выделение пропало и повторить это несколько раз?
Сейчас я делаю так

Выделить код

Код:

gURLBar.select();
setTimeout(function(){gURLBar.blur()}, 400)

Но более одного раза повторить не получается

okkamas_knife пишет:

очевидно же

Это для кого как... :blush:

А зачем в первой строчке задержка 10 м/сек?

И попутно ещё спрошу: какая команда может поместить фокус на тело страницы?

возможно ли выключить Greasemonkey без перезагрузки браузера ?

human пишет:

возможно ли выключить Greasemonkey без перезагрузки браузера ?

На иконку в Панели дополнений клацни.

voqabuhe,
нужно еще и  страницу перегрузить.;)

Можно ли тут

Выделить код

Код:

element.innerHTML=

указать ссылку на документ?

Или каким образом можно заменить большой кусок html кода страницы, чтоб не писать этот кусок в скрипте. Можно ли этот кусок кода для замены сделать в виде отдельного докмента, а в код подставить ссылку на него?

Ну какие же будут подсказки, господа?
Это хоть возможно в принципе?

toxa
Наверное,
http://wiki.greasespot.net/Multi_Line_Strings
=> http://wiki.greasespot.net/GM_getResourceText

Infocatcher пишет:

toxa
Наверное
,http://wiki.greasespot.net/Multi_Line_Strings
=> http://wiki.greasespot.net/GM_getResourceText

Спасибо! То что надо!


А подскажите ещё одну вещь.
Вот этот код я запускаю на странице

Выделить код

Код:

var newDiv = document.createElement('div');
newDiv.innerHTML = '<div><input type="submit" value="clear all" style="width:240px; margin:0 2px" onclick=document.forms[0].elements[0].value=""></input><input type="submit" value="select" style="width:240px; margin:0 4px" onclick=document.forms[0].elements[0].select()></input></div>'
window.document.getElementsByTagName('tr')[3].appendChild(newDiv);

Если запускаю его через Scratchpad, всё нормально, в консоли ошибок нет. Но если пробую выполнить этот код через Firegestures или Keyconfig, код не работает, а в консоли

Выделить код

Код:

Ошибка: некорректно
Исходный код:
<div xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"><div><input type="submit" value="clear all" style="width:240px; margin:0 2px" onclick=document.forms[0].elements[0].value=""></input><input type="submit" value="select" style="width:240px; margin:0 4px" onclick=document.forms[0].elements[0].select()></input></div></

В конце виден кусок закрывающего тега, который не знаю откуда взялся.
Что я делаю неправильно?

Upd
В строке состояния Firegestures пишет какую-то ошибку, но я не успеваю прочитать и не знаю как это скопировать. Кстати, а и правда, как получить содержимое того что написано?

toxa пишет:

Но если пробую выполнить этот код через Firegestures или Keyconfig, код не работает

Вместо window и document надо использовать content и content.document.

Infocatcher
Спасибо большое! :)

подскажите плиз. есть таблица. содержит разные элементы. есть ячейка с текстом

Выделить код

Код:

<table class="tborder" width="100%" align="center">
<tbody><tr>
    <td class="tcat">
        <div class="smallfont" style="float:right">текст1</div>
        текст2
    </td>
</tr>
...

нужно по тексту в ячейке найти таблицу и скрыть ее с формы. как сделать?

panther26 по тексту долго. если таблица не скачет по форме, то проще найти с помощью css селектора, например с помощью querySelector().

Выделить код

Код:

form.querySelector('.tcat > .smallfont').parentNode.parentNode.parentNode.parentNode

ну а по текесту

Выделить код

Код:

var c = form.getElementsByClassName('smallfont');
for (var i = 0, e; e = c[i]; ++i)
{
    if (e.fistChild.nodeValue == 'текст1')
    {
        return e.parentNode.parentNode.parentNode.parentNode;
    }
}

CoolCmd пишет:

panther26 по тексту долго. если таблица не скачет по форме, то проще найти с помощью css селектора, например с помощью querySelector().Выделить кодКод:form.querySelector('.tcat > .smallfont').parentNode.parentNode.parentNode.parentNode

cпасибо за ответ! к сожалению, так не получится, на странице подобных таблиц много очень. уникален только текст в ячейке

CoolCmd пишет:

ну а по текестуВыделить кодКод:var c = form.getElementsByClassName('.smallfont');
for (var i = 0, e; e = c[i]; ++i)
{
    if (e.fistChild.nodeValue == 'текст1')
    {
        return e.parentNode.parentNode.parentNode.parentNode;
    }
}

то есть тут надо еще цикл организовать для элементов classname 'smallfont'? к сожалению, в скриптах не сильно разбираюсь

panther26
я тебе показал один из вариантов поиска. все зависит от конкретного содержания страницы.

На хп все нормально с этим скриптом, но вот на win7 он вешает браузер на некоторых страницах, скажите, возможно подправить что-нибудь здесь?

скрытый текст
// ==UserScript==
// @name          Force Wrap
// @namespace     http://zoolcar9.lhukie.net/mozilla/userscripts/
// @include       *
// @exclude       http://mail.google.com/*
// @exclude       */rss/*
// @exclude       *rss*
// @exclude       http://*/rss/*.xml
// @exclude       https://*/rss/*.xml
// @description      Wrap text automatically. Based on Jesse Rudderman's bookmarklet Force Wrap (http://xrl.us/hsn3) and Reset body HTML (http://xrl.us/hsn5).
// ==/UserScript==

function F(n) {
  var u, r, c, x;
  if(n.nodeType == 3) {
    u = n.data.search(/\S{30}/);
    if(u >= 0) {
      r = n.splitText(u + 30);
      n.parentNode.insertBefore(document.createElement('WBR'), r);
    }
  } else if(n.tagName != 'STYLE' && n.tagName != 'SCRIPT' && n.tagName != 'PRE') {
    for (c = 0; x = n.childNodes[c]; ++c) {
      F(x);
    }
  }
}

F(document.body);
//document.body.parentNode.insertBefore(document.body, document.body);

// Coded added to fix regression is Firefox 2.0/3.0 dev builds
// Ripped from MR Tech Link Wrapper 2.0.2
var thisE = document.body;
var p = thisE.parentNode;
var n = thisE.nextSibling;
p.removeChild(thisE);
p.insertBefore(thisE, n);

Спасибо

Скрипт то работает, вот хотябы здесь. Помогите пожалуйста.

У меня есть скрипт, в котором записано:
// @include       http*://*google.com/*
// @include       http://yandex.ru/*

И вот на Google он работает нормально на всех страницах.
А на Яндексе срабатывает только на первой странице результатов поиска. На всех последующих не работает, но если какую-то последующую страницу обновить, то скрипт на ней срабатывает.

Почему это и что можно сделать?

Чайник
Там динамическая подгрузка через ajax/XMLHttpRequest и страницы как таковые не загружаются. Скрипт вероятно должен это отслеживать (через DOMNodeInserted, например), но по какой-то причине этого не делает.

18-10-2013 18:40:20
Ну и убедитесь, что там не https :)

Lex1 пишет:

Скрипт вероятно должен это отслеживать (через DOMNodeInserted, например), но по какой-то причине этого не делает.

Ну и убедитесь, что там не https :)

Скрипт этого не делает, потому что я не написал это в коде :)

Я не знаю как сделать через DOMNodeInserted и тупо сделал

Выделить код

Код:

function myFunction(){// Мой код}
document.body.on*load=myFunction

Или этот вариант нежелателен?

Чайник
А там нет загрузки страницы, не будет и body.on*load. Нужно, например document.addEventListener('DOMNodeInserted', someFnc, false); см. http://userscripts.org/scripts/review/98394

Lex1 пишет:

А там нет загрузки страницы, не будет и body.on*load. Нужно, например document.addEventListener('DOMNodeInserted', someFnc, false); см. http://userscripts.org/scripts/review/98394

Спасибо Lex1, так работает! :)

А зачем этот огромный скрипт для удаления редиректов Google?
Почему просто не удалить скриптом атрибут onmousedown у ссылок? Я так делал и вроде ссылки на страницах Google становились прямые, без редиректа.

Lex1 пишет:

DOMNodeInserted

только не это. тыц желтенькое

Чайник пишет:

Почему просто не удалить скриптом атрибут onmousedown у ссылок?

userscripts.org опять упал... но предположу, что автор нуп. надеюсь, он не станет писать расширения для лисы.  :)

19-10-2013 12:48:16

Выделить код

Код:

// @include       http*://*google.com/*

можно заменить на

Выделить код

Код:

// @include       https://www.google.com/search?*

потому что гугл теперь ищет только в https.

Вот какая мысль возникла. Зная хэш сумму можно скачать раздачу с трекера добавив в utorrent - magnet:?xt=urn:btih:ХЕШ-СУММА. А можно (локально для рутрекера) сделать скрипт который сам преобразовал хэш в магнет?
Оказывается уже есть.

CoolCmd пишет:

но предположу, что автор нуп. надеюсь, он не станет писать расширения для лесы.

посмотрел. он не нуб, просто слоупок. так что для расширений лисы серано не годен. :)

Как в просмотре кода выделенного фрагмента реализована подсветка?

Встроенный поиск F3 находит требуемое (в исходнике страницы), только если это plain text, без тегов. А "Исходный код выделенного фрагмента" умеет подсветить и текст, в котором теги были.

Почему этот код

Выделить код

Код:

if (document.location.hostname="my_host"){
function remove() {
links=document.getElementsByTagName('a');
for(var i=0; i<links.length; i++)
links[i].removeAttribute('href')
}

remove()
}

вызывает перезагрузку страницы?

toxa
Может быть потому, что в первой строке кода
используется оператор присваивания [=]
вместо оператора проверки на равенство [==].

Точно! :dumb:

Может кто-нибудь попробует помочь?:rolleyes:

Почему здесь обработчик onclick срабатывает только один раз?

Ferguss114
Потому что hasAttribute() проверяет наличие атрибута (и вызывается, кстати, неправильно).

Я переделал hasAttribute() на getAttribute() и всё заработало.
Ещё пара вопросов: почему если в условии стоит else или else if то всё нормально, а если два независимых условия с  if — то не работает?

так работает

скрытый текст

Выделить код

Код:

<htlm>
  
  <body>
    <div style="background-color:skyblue" id="mydiv1" onclick="changeColor()">DIV1 ---- кликнуть сюда для изменения цвета DIV2----</div>
    <br>
    <div style="background-color:red" id="mydiv2">DIV2</div>
    <script>
      function changeColor() {
        div = document.getElementById('mydiv2');

        if (div.getAttribute('style') == 'background-color:red') {
          div.setAttribute('style', 'background-color:yellow')
        } else {   // <<<<<<<<<<<<<<                                     
          div.setAttribute('style', 'background-color:red')   //  <<<<<<<<<<<<<<   
        }
      }
    </script>
  </body>
</htlm>


а так  нет
скрытый текст

Выделить код

Код:

<htlm>
  
  <body>
    <div style="background-color:skyblue" id="mydiv1" onclick="changeColor()">DIV1 ---- кликнуть сюда для изменения цвета DIV2----</div>
    <br>
    <div style="background-color:red" id="mydiv2">DIV2</div>
    <script>
      function changeColor() {
        div = document.getElementById('mydiv2');

        if (div.getAttribute('style') == 'background-color:red') {
          div.setAttribute('style', 'background-color:yellow')
        }
        if (div.getAttribute('style') != 'background-color:red')  {   // <<<<<<<<<<<<<<   
          div.setAttribute('style', 'background-color:red')    // <<<<<<<<<<<<<<
        }                                                                            
      }
    </script>
  </body>
</htlm>


И последнее: если я хочу передать event  в качестве аргумента, когда нужно писать полностью event, а когда достаточно е?
[firefox] вроде должен понимать е

Ferguss114 пишет:

а так  нет

Ну и что должно происходить, когда style='background-color:red' ?
getAttribute() возвращает текущее значение атрибута.

Ferguss114 пишет:

И последнее: если я хочу передать event  в качестве аргумента, когда нужно писать полностью event, а когда достаточно е?

Выделить код

Код:

node.onclick = function(anything) {
    ...
};
node.addEventListener("click", function(anything) {
    ...
}, false);
node.setAttribute("onclick", "doSomething(event);");

Ferguss114
Вариант:

Выделить код

Код:

(div.getAttribute('style') == 'background-color:red') 
? div.setAttribute('style', 'background-color:yellow')
: div.setAttribute('style', 'background-color:red');

Infocatcher, bunda1
Спасибо :)

Понравился скрипт Lights out any page for Greasemonkey, но вся его ценность для меня пропадает, из-за того что для его работы требуется разрешить Java Script. В связи с этим вопрос, можно ли как-то подправить данный скрипт, чтобы он работал и при запрещённых Java Script?

После обновления NoScript до v 2.6.8.8rc2 проблема исчезла

+ Enforce docShell-based script blocking for Gecko > 28

Как сделать чтобы результат не был 0?
http://learn.javascript.ru/play/nBA8Sb

hartumov пишет:

Как сделать чтобы результат не был 0?

Считывать данные из полей для ввода перед вычислением, а не при загрузке страницы.

Infocatcher пишет:

Считывать данные из полей для ввода перед вычислением, а не при загрузке страницы.

То есть присваивать данные из полей в переменные внутри функции getRes?

А если эти данные из полей ввода должны использоваться ещё и в другой функции? Как сделать чтоб она их увидела?
Объявлять x и y без var, чтобы они стали глобальными переменными и тогда будут доступны в любом месте скрипта?

hartumov
Вот так, например: http://learn.javascript.ru/play/oxSYP

Infocatcher
Спасибо! ;)

Как сделать EventListener на загрузку этого окошка, чтобы по окончании загрузки в инпут вставился мой текст?

Выделить код

Код:

w=open('','', 'width=370,height=120');   
w.document.body.innerHTML="<center><p><input type='text size='10'></p></center>"

Ну это я для наглядности взял окошко, где кроме инпута больше ничего нет.
А вот пример из поста Infocatcher http://learn.javascript.ru/play/oxSYP — если  я хочу открыть его со вставленными из буфера числами, как быть? Ведь не реально в data впихнуть код целой страницы.
Или открыть локальный хтмл файл  в виде всплывающего окошка и тоже вставить в поля содержимое буфера, т.е. опять же надо дождаться окончания загрузки страницы.

А EventListener на загрузку всплывающего окна — это очень сложно?

hartumov пишет:

если  я хочу открыть его со вставленными из буфера числами, как быть?

Откуда открыть? У обычных страниц бедет доступ только к страницам с того же домена.
А так-то это просто:

Выделить код

Код:

var w=open(location.href, '', 'width=370,height=120');
w.addEventListener("load", function setup() {
    w.removeEventListener("load", setup, false);
    w.document.body.innerHTML="<center><p><input type='text size='10' value='1'></p></center>";
}, false);

03-01-2014 21:19:38
Ну, и блокировщик всплывающих окон придется временно отключить. :)
Или нужно делать кнопку, чтобы окно открывалось после клика.

Infocatcher
Я сохранил страничку с вашим "счётчиком" http://learn.javascript.ru/play/oxSYP
Теперь подставляю в код адрес локального файла

Выделить код

Код:

var w=open('file:///C:/Calc.html', '', 'width=370,height=120');
w.addEventListener("load", function setup() {
    w.removeEventListener("load", setup, false);
w.content.document.getElementsByTagName('input')[0].value='TEST';
}, false);

Текстовые поля я сделал пустыми. Теперь пытаюсь получить первый инпут и вставить в него строку 'TEST'. В идеале я хотел вставлять содержимое буфера, но пока хоть так.
Вот для этого мне и нужен был Listener. Но получить инпут (а хоть и любой элемент) внутри  функции я не могу.
Код я запускал из Keyconfig, если это важно. 

А с таймаутом да, работает, я ещё вчера пробовал. Вне этой функции - open() - можно свободно получить любой элемент. А изнутри - не выходит.
Но тогда этот EventListener не нужен, просто открываю окно, таймер через полторы секунды вставляет текст. Я думал с обработчиком лучше.
Или с обработчиком никак не выйдет?

hartumov пишет:

Код я запускал из Keyconfig, если это важно.

Да, важно, там совсем другое окно и совсем другая функция open(), которая возвращает ссылку на окно браузера, внутри которого уже находится окно со страницей (которая еще не загрузилась на момент загрузки окна браузера).

Можно сделать вот так:

Выделить код

Код:

var w = window.openDialog(
    "chrome://browser/content/",
    "_blank",
    "chrome,dialog=no,width=370,height=120",
    "file:///F:/test.html"
);
w.addEventListener("load", function setup(e) {
    w.removeEventListener(e.type, setup, false);
    //w.content.document.getElementsByTagName('input')[0].value='TEST';
    var browser = w.gBrowser.selectedBrowser;
    browser.addEventListener("load", function setupContent(e) {
        browser.removeEventListener("load", setupContent, true);
        //w.content.document.getElementsByTagName('input')[0].value='TEST';
        browser.contentDocument.getElementsByTagName('input')[0].value='TEST';
    }, true);
}, false);

Но зачем это нужно?

04-01-2014 01:11:28

hartumov пишет:

В идеале я хотел вставлять содержимое буфера, но пока хоть так.

Казалось бы, что это все делает в теме про Greasemonkey. :)
Greasemonkey, кстати, вроде бы, только GM_setClipboard() умеет.

Но из расширений никаких ограничений нет, а в контексте главного окна браузера вообще доступна готовая функция readFromClipboard() из chrome://browser/content/browser.js.

okkamas_knife пишет:

hartumov

в твоём случае можно сделать проще...

Я б не сказал, что этот вариант для меня проще. Я толком и не разобрался что там  к чему :rolleyes:

А вот вариант Infocatcher-а это как раз то что я и хотел. Работает как часы! :rock:

У меня возник еще вопрос по экранированию кавычек. Почему здесь обработчик онклик перестает работать если я экранирую двойные кавычки? http://learn.javascript.ru/play/LeSTEb

Именно здесь это не нужно, здесь используются разные их виды, но я хочу понять в чем причина.

hartumov пишет:

У меня возник еще вопрос по экранированию кавычек. Почему здесь обработчик онклик перестает работать если я экранирую двойные кавычки? http://learn.javascript.ru/play/LeSTEb

Именно здесь это не нужно, здесь используются разные их виды, но я хочу понять в чем причина.

В значениях атрибутов экранирование не работает, там можно только &quot; или &#39;/&apos; написать.
А экранировать надо при вот таком использовании:

Выделить код

Код:

document.getElementsByTagName("input")[0]
    .setAttribute(
        "onclick",
        "document.getElementsByTagName(\"textarea\")[0].value=\"test test test\""
    );

У меня вызывается prompt в котором есть дефолтный текст. И вот этот текст изначально выделен, а мне это не удобно.
Можно сделать, чтоб выделения не было или оно само бы сбрасывалось?

Что ж, никаких вариантов?

Ki_rrrilll
Применительно к Greasemonkey можно только сделать свое псевдоокошко с input'ом.

Infocatcher пишет:

Применительно к Greasemonkey можно только сделать свое псевдоокошко с input'ом.

А НЕприменительно к Greasemonkey?

Ki_rrrilll пишет:

А НЕприменительно к Greasemonkey?

Из расширения можно открыть свой диалог.
Или отследить открытие стандартного и что-нибудь с ним сделать.

Infocatcher пишет:

Или отследить открытие стандартного и что-нибудь с ним сделать.

Ну вот это я и имел в виду — отследить открытие стандартного промпта и как-то убрать выделение у текста.
А что можно с ним (стандартным промптом) сделать?

Ki_rrrilll пишет:

Ну вот это я и имел в виду — отследить открытие стандартного промпта и как-то убрать выделение у текста.

Только есть тонкость: могут быть сложности и изменением только одного конкретного диалога.
Вот тут есть пример: http://forum.mozilla-russia.org/viewtop … 41#p470941
Только там для отдельных окон, а не для тех, что поверх содержимого вкладок открываются.

Ki_rrrilll пишет:

А что можно с ним (стандартным промптом) сделать?

Да что угодно, в принципе.
А выделение можно сбросить через

Выделить код

Код:

textbox.inputField.selectionStart = textbox.value.length;

Весь вопрос только в получении textbox'а из этого диалога.

есть такой скрипт: http://userscripts.org/scripts/review/93679
можно ли как-то добавить размер картинки в килобайтах (байтах)?
заранее спасибо.

Как совместить переменную и regexp?

var val = a;
str.match(здесь мне надо val + /foo/)

toxa
Видимо, https://developer.mozilla.org/en-US/doc … onstructor
Или что там надо совмещать?

Я нашёл на русском, как это делается http://www.cyberforum.ru/javascript-reg … 42589.html но не очень получается...
Мне надо получить подстроку - привожу её как она есть, со всеми кавычками и запятыми. Цифры могут меняться
val,"id":943,"parent":685

Я хочу через match(), составил regexp (не уверен, правильно ли?)

Выделить код

Код:

/,\"id\":\d+,\"parent\":\d+/

теперь надо как-то подставить перед этим выражением мою переменную val чтобы получилось

Выделить код

Код:

str.match(val и /,\"id\":\d+,\"parent\":\d+/)

Я пробовал создать new RegExp, но не получается.

Вроде разобрался :)
Может ещё кто подскажет - как найти нужную строку в локальном json файле?
Кроме как открывать этот файл в Блокноте

Попытался сделать скрипт для установки белого фона на определенном сайте но он не  работает

скрытый текст
// ==UserScript==
// @name mail
// @namespace mail.ru
// @description white
// @include http://my.mail.ru/*
// @version 1
// @grant none
// ==/UserScript==
document.body.style.background = “#ffffff”;

Что не так? Сайт userscripts.org не  открывается.

oleg.sgh для этого не нужен greasemonkey.
фон в мылору задается не в body.

CoolCmd пишет:

oleg.sgh для этого не нужен greasemonkey.
фон в мылору задается не в body.

там либо серый фон  либо с цветочками и ягодками
greasemonke уже стоит и хотелось бы поставить им

А где теперь брать скрипты? Сайт userscripts.org - is dead.
У меня допустим уже Youtube Video Ratings не работает.

Pony_Smile_Pack пишет:

А где теперь брать скрипты? Сайт userscripts.org - is dead.

Предлагают тут.

А  userscripts.org совсем умер? Пысы посоветуйте пожалуйста скрипт для скачки с файлообменников без капчи и ожидания.

GOT пишет:

А  userscripts.org совсем умер?

http://userscripts.org:8080/

для скачивания музыки в VK скрипт бы.

Hastla
http://userscripts.org:8080/scripts/show/134949

villa7
этот скрипт просто открывает аудиофайл

Hastla
Не знаю что у Вас открывает, у меня IDM-ом скачивает.

Hastla пишет:

для скачивания музыки в VK

ВКонтакте.ру Downloader 0.3.7.1pre

IDM

Я не знаю даже что это такое.

ВКонтакте.ру Downloader 0.3.7.1pre

Вот такое, только скрипт. Чтобы файл скачивался с именем  "исполнитель - название.mp3"

Hastla
IDM = Internet Download Manager

Hastla пишет:

Вот такое, только скрипт

Вот такое, только расширение.

Hastla
Зачем именно скрипит, скачал что нужно, отключил расширение и не мешает, понадобилось снова включил, делов то 5секунд.

Есть рабочий скрипт YouTube Center?

Mishania
https://github.com/YePpHa/YouTubeCenter … er.user.js

aleks_123
Не хочет у меня в 29 работать и всё! Отключаю все дополнения и всё равно не работает. Менял флешплеер даже (стоял 14 бета). Чёрный экран плеера и не открываются настройки. Расширение YouTube Center работает.

Mishania
Не знаю в чем там у тебя проблема. У меня то версия [firefox] 24.5 ESR

aleks_123
На 29 [firefox] тоже всё работает. Правда у меня Скриптиш вместо Обезьяны, может в этом дело.

villa7
aleks_123
Моя вина, стояла бета грейсманки, поставил с АМО и всё заработало. Спасибо за скрипт.

Этот сайт тоже умер, увы:( http://userscripts.org:8080/

GOT пишет:

Этот сайт тоже умер, увы:( http://userscripts.org:8080/

вот такие ещё есть
http://userscripts-mirror.org/
https://greasyfork.org/scripts/

Можно ли реализовать возможность, чтобы при открытии любого видео youtube в ссылку добавлялось no-cache и соответственно загрузка шла по новой ссылке?
_____________
пощенски кутии

При переходе по ссылке http://www.discogs.com/Armando-The-New-World-Order/release/2315682 с рутрекера выдаёт 500 Internal server error. Связано это с реферером. Было бы здорово если кто-нибудь скрипт написал для нормальной работы.

okkamas_knife пишет:

выключи их в about:config

и поимей проблемы на фотохостингах.

Xant1k
дай адрес рутрекера, где ссылки на твой сайт для наркоманов.
зачем делать скрипт ради пары переходов?

Xant1k пишет:

Связано это с реферером.

Связано это с тем что discogs не хочет, чтобы на него переходили с рутрекера.

12-06-2014 22:33:55

Этот сайт тоже умер, увы http://userscripts.org:8080/

вроде нет ещё

Перестал работать GoogleMonkeyR. Поделитесь рабочей версией.

Mishania пишет:

Перестал работать GoogleMonkeyR. Поделитесь рабочей версией.

скрытый текст

То, что выложено выше соответствует http://userscripts.org:8080/topics/199305?page=3 Скрипт работает, но пару дней назад, в очередной раз, сломалась подгрузка страниц. Если кто починит будет очень здорово.

Sagen пишет:

То, что выложено выше соответствует http://userscripts.org:8080/topics/199305?page=3

если быть точнее, то соответствует этому посту  : http://userscripts.org:8080/topics/212234#posts-613988 и всё работает

Может в ночнушке дело. Ловлю вот такое.

Sagen, может и в ночнушке дело ...   на 30-ке примерно так :

скрытый текст
https://forum.mozilla-russia.org/uploaded/2014-06-14_020303g.jpg

сам огорчился, когда скрипт у меня перестал работать пару недель назад ....  потом по комментам там почитал и скачал рабочую для меня версию ( которую и выложил выше)

А я как коменты почитал, пару недель месяцев назад, так он у меня и работает.

Сейчас в крайний хром скрипт киданул, все работает :sick: Беда печаль. В хроме, кстати, сохраненные настройки в GooglemonkeyR settings отображаются. В общем скрипт рабочий, но что-то пошло не так.

Astana76, большое спасибо!

Скрипт GoogleMonkeyR не работает с https://www.google.com.ua/ . Может кто-нибудь проверить?

Pippo78 пишет:

Скрипт GoogleMonkeyR не работает с https://www.google.com.ua/ . Может кто-нибудь проверить?

Работает

Pony_Smile_Pack большое спасибо все работает если включить безопасный поиск в гугл. Если безопасный поиск отключен , то и  скрипт не работает.

Pippo78 пишет:

Pony_Smile_Pack большое спасибо все работает если включить безопасный поиск в гугл. Если безопасный поиск отключен , то и  скрипт не работает.

Ну, у меня отключён.

Релизнули гризманку 2.0 Смотреть осторожно, предварительно прочитав описание.

В Greasemonkey 2.0 некоторые старые скрипты не будут работать из-за двух изменений, сделанных в целях безопасности.

Во-первых, изменилась работа привилегированной песочницы в соответствии с изменениями, сделанными Mozilla в unsafeWindow из Add-on SDK. Теперь, чтобы записывать значения в unsafeWindow, требуется использовать новые методы cloneInto(), exportFunction() и createObjectIn().

Во-вторых, изменилась обработка режима @grant, с помощью которого пользовательские скрипты указывают, к каким методам API им нужен доступ. Если методы не указывались прямо, то раньше Greasemonkey пытался установить их самостоятельно и выбрать подходящий режим @grant. Теперь в таких случаях по умолчанию устанавливается флажок @grant none, то есть нулевой доступ.

В анонсе также сказано, что изменение в работе @grant не затрагивает ранее установленные скрипты, а вступает в силу только после редактирования, обновления или переустановки скрипта, или после установки нового скрипта.

В Greasemonkey 2.0 есть ещё несколько нововведений. Например, включена по умолчанию синхронизация пользовательских скриптов через Firefox Sync. Кроме того, из Greasemonkey удалены все ссылки на каталог пользовательских скриптов Userscripts.org, который уже больше месяца в дауне.

http://webtun.com/browsers/6510-greasem … iptov.html

Здравствуйте!
Помогите реализовать в браузере вывод  id анкеты ВК.

код:

Выделить код

Код:

<div id="gedit_user_requests8483670" class="gedit_user"><div class="gedit_user_bigph_wrap fl_l" onmouseover="GroupsEdit.bigphOver(this, 8483670)"><a class="gedit_bigph" href="/albums8483670" style="margin-top: 100px;"><span class="gedit_bigph_label">Увеличить</span></a><a class="gedit_user_thumb" href="/id8483670"><img class="gedit_user_img" src="http://cs425424.vk.me/v425424670/69b9/HdUFBi2gkHo.jpg"></a></div><div class="gedit_user_info fl_l"><div class="gedit_user_name"><a class="gedit_user_lnk" href="/id8483670">Александр Шевернёв</a></div><div class="gedit_user_btns"><div class="gedit_user_buttons"><div class="button_blue fl_l"><button onclick="GroupsEdit.uAction(this, 8483670, 'd6c84f2b3f7cbd34ee', 1)">Принять в группу</button></div><div class="button_cancel gedit_user_cancel_button fl_l"><div class="button" onclick="GroupsEdit.uAction(this, 8483670, 'd6c84f2b3f7cbd34ee', -1)">Отклонить заявку</div></div></div></div></div><div class="gedit_user_actions fl_r"></div></div>

8483670 (id анкеты) необходимо вывести после имени и фамилии, как на картинке:
http://s020.radikal.ru/i723/1407/e5/2fb20ac9e804.jpg

freakos

Выделить код

Код:

var a = document.getElementsByClassName('gedit_user_lnk');
for (var i = 0, b; b = a[i]; ++i)
{
    var c = document.createElement('span');
    c.style.marginLeft = '1em';
    c.textContent = b.getAttrubute('href').substr(3);
    b.parentNode.appendChild(c);
}

не проверял

Проблема с post-запросом. Обращаюсь к пхп-файлу таким образом:

Выделить код

Код:

$("input[value='OK']").click(function(){
    console.log('test');
    var gmxml = GM_xmlhttpRequest({
        method : "POST",
        url : "http://myserv.w.pw/save_post.php",
        data: "mes=qwer123&thrd=555",
        onload : function() {
            console.log('success');
        },
        onerror:function() {
            console.log('FAIL ');
        }
      });
});

Запрос успешно проходит. Однако в пхп-файле $_POST['mes'] и $_POST['thrd'] пустые, print_r тоже пустые массивы даёт. ЧЯДНТ?

null28
А если как в примере добавить

Выделить код

Код:

  headers: {
    "Content-Type": "application/x-www-form-urlencoded"
  },

?

и правда, теперь работает...

хотя до этого пробовал, не получалось. похоже не проверил после того как на сервере хейдер поставил...

Возможно ли с помощью GM, ну или любыми другими средствами браузера/расширений, подменять загружаемый скрипт с определенной страницы? Например, грузится с сайта скрипт "grid_core_item.js". Могу ли я его заменить локальным скриптом, либо со своего домена? Спасибо.

PS. Временно решил вопрос с помощью Fiddler'a. Но хочется организовать это без дополнительных программ.

Zloy_Gelud т.е. скрипт находится не в html, а в отдельном файле?

CoolCmd пишет:

Zloy_Gelud т.е. скрипт находится не в html, а в отдельном файле?

Да. Скажу больше - он подтягивается с помощью XHR.

Zloy_Gelud
ты скрыл от нас самое главное. :) попробуй https://developer.mozilla.org/en-US/doc … onObserver.

CoolCmd пишет:

Zloy_Gelud
ты скрыл от нас самое главное. :) попробуй https://developer.mozilla.org/en-US/doc … onObserver.

Я был бы тебе очень признателен, если бы ты накидал небольшой пример для моего случая. :)

Zloy_Gelud
я глянул в инет... отменить выполнение внешнего файла в лесе нельзя. так что остается 3 способа:
1.запретить загрузку в adblock-е
2.программно блокировать результаты работы скрипта. зависит от его содержимого, иногда это просто, а иногда невозможно.
3.вместо gm скрипта написать расширение ff.

CoolCmd

CoolCmd пишет:

отменить выполнение внешнего файла в лесе нельзя.

Я с помощью beforescriptexecute блокировал.

CoolCmd пишет:

вместо gm скрипта написать расширение ff

А что это даст? Что можно такого сделать в расширении, что нельзя реализовать в скрипте GM? А то я нуб в этом.

Zloy_Gelud пишет:

Я с помощью beforescriptexecute блокировал.

это только для inline скриптов.

Zloy_Gelud пишет:

А что это даст?

возможность блокировать загрузку, примерно как это делает адблок. в лесе скорее всего есть для этого api.

CoolCmd пишет:

это только для inline скриптов.

Я не знаю для чего он предназначен, но динамически подгружаемые скрипты им тоже можно отсекать.

Zloy_Gelud
ну так отсекай. лови в body это сообщение. preventDefault(). потом вставляй свой тег. может будет достаточно src изменить хз.

Не отображаются favicon для некоторых сайтов, вернее отображаются, но как-то странно: то есть, то нет.

Куски скрипта которые выводят иконку сайта:

Выделить код

Код:

$(document).ready(function () {
    var imgs = "https://plus.google.com/_/favicon?domain=";
//бла бла бла
var link3 = '<a target="_blank" title="chdbits.org" href="http://chdbits.org/torrents.php?search=' + movie_enc + ' ' + year + '"><img src="' + imgs + 'chdbits.org"></a>';

Пробую менять на получение уже с полного адреса, а не через доменное имя
https://plus.google.com/_/favicon?domain=
>
https://plus.google.com/_/favicon?domain_url=
Результат нулевой.
Так же пробовал с http://www.google.com/s2/favicons?domain= ничего не вышло.

Есть мысль что надо копать в сторону уровней доменов и через  регулярку выводить, но как это организовать? В JS полный 0, делаю всё интуитивно/на основе схожих проблем, примеров.
При этом, хотелось бы сохранить оригинальную задумку автора вписывая только домен верхнего уровня(?).

В общем дело обстоит так. Работа предстоит с Firefox.
Есть страница https://by.e-konsulat.gov.pl/Uslugi/RejestracjaTerminu.aspx?IDUSLUGI=8&IDPlacowki=93
Внизу страницы есть капча, но периодически, при большой нагрузке на сайт, ддосе и тд, страница загружается не полностью и капча не отображается.
Что делаем, когда загружается полупустая страница :
- Кликаем по центральной части страницы правой кнопкой и выбираем Inspect element;
- Ищем блок table#cp_tabFormularz.biale_tlo и справа снимаем флажок у visibility: hidden.
После этого капча появляется.
Но это все очень долго. Решил попробовать поставить Greasemonkey на Firefox и сделать скрипт, который загружал бы страницу с уже исправленной строкой, те вместо <table id="cp_tabFormularz" width="650" class="biale_tlo" style="visibility: hidden"> загружал бы <table id="cp_tabFormularz" width="650" class="biale_tlo" style=""> ну или что-то вроде того.
Это вообще реально сделать или у меня дурные мысли на ночь глядя поперли?
Просто это же можно как-то сделать, но вот с какой стороны подойти и как реализовать не могу придумать.
Помогите, если у кого есть мысли, может это все можно сделать намного проще и быстрее, а я лезу в дебри. Заранее спасибо.

kobrin13
проблема решается стилем.
#cp_tabFormularz{visibility:visible!important;}

iDev.Pi
я очень извиняюсь, тк далек от скриптов, а какой вид скрипт должен иметь?
// ==UserScript==
// @name        Виза
// @namespace   Виза
// @description Виза
// @include     https://by.e-konsulat.gov.pl/Uslugi/RejestracjaTerminu.aspx?IDUSLUGI=8&IDPlacowki=93
// @version     1
// @grant       none
// ==/UserScript==
#cp_tabFormularz{visibility:visible!important;}
типа этого или как?

Может так:

Выделить код

Код:

// ==UserScript==
// @name        Виза
// @namespace   Виза
// @description Виза
// @include     https://by.e-konsulat.gov.pl/Uslugi/RejestracjaTerminu.aspx?IDUSLUGI=8&IDPlacowki=93
// @version     1
// @grant       none
// @run-at         document-end
// ==/UserScript==
document.getElementById('cp_tabFormularz').style.visibility = 'visible !important';

Zloy_Gelud
не работает, к сожалению(

kobrin13 пишет:

Zloy_Gelud
не работает, к сожалению(

А стиль поменялся после загрузки страницы или нет?
Можешь попробовать как ты говорил:
document.getElementById('cp_tabFormularz').style.visibility = 'hidden !important';

Zloy_Gelud
никак не помогает... стиль не меняется, проверяю ручками, галочка на месте(

kobrin13 пишет:

Zloy_Gelud
никак не помогает... стиль не меняется, проверяю ручками, галочка на месте(

Ну тогда мне кажется необходимо лично смотреть на страницу. Но на нее не пускает.

Zloy_Gelud
а обойтись без скриптов - не вариант?

iDev.Pi пишет:

Zloy_Gelud
а обойтись без скриптов - не вариант?

А я откуда знаю. :) Я ж не спец. Если знаете как - посоветуйте человеку.

UPD. Вы про Stylish говорили?

Выделить код

Код:

@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document url("https://by.e-konsulat.gov.pl/Uslugi/RejestracjaTerminu.aspx?IDUSLUGI=8&IDPlacowki=93") {
    #cp_tabFormularz{visibility:visible!important;}
    /*#cp_tabFormularz{visibility:hidden!important;}*/
}

Zloy_Gelud
Браузер Firefox поддерживает установку пользовательских стилей. Код стиля - я привёл выше. Один из вариантов использования стилей в Firefox - это Stylish.
Всю эту информацию вы могли бы и сами собрать, воспользовавшись поиском.

iDev.Pi
и это не помогло(

11-08-2014 16:10:01
http://s44.radikal.ru/i103/1408/55/cb9c44b928bb.jpg вот как-то так

помогло вот так

Выделить код

Код:

document.getElementById('cp_tabFormularz').style.visibility = "";

но работает только через F12 - консоль
а в greasemonkey или stylish отказывается

kobrin13
Через Stylish можно попробовать:

Выделить код

Код:

#cp_tabFormularz {all: unset !important;}

Kamui
тоже мимо)

Почему иногда не отображаются иконки? http://jsfiddle.net/hellowahab/bTQaa/

Xant1k
иногда? вспышка на солнце. бум! нет favicon. :(
конкретно какой адрес не отображается. с чего ты взял, что это не проблемы яндекса? ctrl+shift+q (в фф31) и смотри почему не грузится.

GoogleMonkeyR опять побился, криво отражает результаты. Есть ли решение?

Пробуйте https://greasyfork.org/forum/discussion/1293/x

Sagen пишет:

Пробуйте https://greasyfork.org/forum/discussion/1293/x

Да, я читаю это. Там зазор остаётся у меня. Между результатами и поисковой строкой.
Напишу им туда конечно.

Да, работает. То что на pastebin он там выложил.

Разъясните такую ситуацию:
Есть такой сайт - www.yaplakal.com
Грузится страница у меня очень долго (смотрю в адресной строке по индикатору от status-4-evar) и пока не загрузится целиком, перемещаться по ней практически невозможно.
В итоге выяснил, что виноват грисманки. Пробовал внести сайт в глобальные исключения всего грисманки - не помогло. Прописывал эксклуды в активных скриптах - тоже не помогло, такие же тормоза при загрузке страницы.
В итоге, решил временно сделать обезьяну не активной и чудо, страница стала грузится в РАЗЫ быстрее. Всё было бы замечательно, но мне нужно, чтобы один скрипт оставался активным.
Можно ли чего-нить с этим поделать?

Inko7
Ничего такого у себя не наблюдаю, грузится сайт быстро, стробер не крутится... Может не Greasemonkey виноват, а какой-то конкретный скрипт? Проверь, если это так, то виновника и вноси в исключения.

voqabuhe
вносил вот такое исключение *yaplakal* во все скрипты, которые активны на данной странице - не помогало...
не могут ли влиять отключенные скрипты? может и в них нужно прописать исключение?

Inko7 пишет:

не могут ли влиять отключенные скрипты?

нет
значит неправильно отключил

Inko7 пишет:

вносил вот такое исключение *yaplakal* во все скрипты, которые активны на данной странице - не помогало...

А если просто отключить все скрипты которые работают с yaplakal? Если поможет, то тогда методом исключения выявить виновника.

voqabuhe пишет:

А если просто отключить все скрипты которые работают с yaplakal

отключал все у которых в инклудах было разрешение для всех сайтов - те же тормоза...
вроде и комп не слабый и инет быстрый, но тупит именно на этом сайте
уточню: содержимое сайта вроде и быстро подгружается, но скролл не пашет или дергает страницу и замирает, троббер на вкладке тоже тупит. И все это пока не догрузится страница целиком, затем все сразу ок.

Inko7
Можно тогда ещё попробовать на Scriptish перейти и/или [firefox] обновить.

05-09-2014 14:53:10
ЗЫ И предыдущие версии Greasemonkey попробовать.

voqabuhe
ок, буду разбираться...
в качестве временной меры, с помощью CB принудительно отключаю GM для yaplakal, а для остальных обратно включаю ;)

Inko7
Попробовал yaplakal добавить в белый список NoScript, так на моём старье к [firefox] пришёл просто какойто пипец. :) Как я понимаю, ты NoScript не пользуешься? Там же куча флэша подгружается и прочего добра, вот всё и тормозит.

voqabuhe
нет, NoScript не пользуюсь
был без надобности как-то

Greasemonkey 2.2 создаёт файлы базы данных теперь, это нормально?
А то Mouseover_Popup_Image_Viewer.db-wal и YouTube_Link_Title.db-wal по 32 МБ уже каждый
--------
они временные, как я понял, эти .db-wal
но, что-то они не отлипают на этих скриптах

странно просто, 64 МБ целых
---------
и у них один автор
пожалуй надо маякнуть ему об таком деле

Pony_Smile_Pack
Это только скрипты имеющие разрешения:
// @grant       GM_getValue создает *.db
// @grant       GM_setValue создает .db-shm и .db-wal
Прим: http://onedev.net/post/357

ЗЫ: Обычно не пользуюсь такими, если бы не вы, так бы и не узнал про этот "мусор" ещё долгое время. Пожалуй добавлю ещё себе и в CCleaner:

скрытый текст
[Greasemonkey (Базы Данных Скриптов)]
Section=Расширения: Firefox
Default=False
FileKey1=%AppData%\Mozilla\Firefox\Profiles\*\gm_scripts\|*.db
FileKey2=%AppData%\Mozilla\Firefox\Profiles\*\gm_scripts\|*.db-shm
FileKey3=%AppData%\Mozilla\Firefox\Profiles\*\gm_scripts\|*.db-wal

здравствуйте, мне нужен совет, может кто поможет :)

я хочу вернуть странице поста livejournal (той которая дефолтная для S1 стиля и которую можно увидеть в любом стиле по format=light) её старый вид. поясню что я имею в виду.

сейчас страница выглядит так

http://cdn.joxi.ru/uploads/prod/2014/09/14/540/0c2/57c82dbf9aa3dfb483ffdd63a089b7643d8277ae.png

как можно заметить, справа много пустого места которое плохо смотрится и которое хочется использовать.

а раньше страница выглядела так

http://cdn.joxi.ru/uploads/prod/2014/09/14/59d/b14/9eb0a0cc702e62b8bf078c9186c964811b10cd5a.png

как видно, в этом варианте строка занимает всю или почти всю ширину страницы.

сейчас я эту ширину меняю с помощью вот этого костыля - выставив там ширину в 115em. но при изменении размера окна появляется горизонтальная прокрутка, а при выставлении значения 100% ширина просто сбрасывается на дефолтную (узкую).

для меня css и javascript это китайская грамота, но может кто из знающих подскажет, как сделать так чтобы текст растягивался на всю ширину окна, какого бы размера ни было окно?

спокойный

Выделить код

Код:

.b-singlepost-wrapper {max-width: none !important}

я думаю, можно в userContent.css запихнуть и обойтись без скрипта.

CoolCmd пишет:

спокойныйВыделить кодКод:.b-singlepost-wrapper {max-width: none !important}я думаю, можно в userContent.css запихнуть и обойтись без скрипта.

а куда этот файл положить (или где его найти)?

в папку профиля которая в %userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\

или в c:\Program Files (x86)\mozilla firefox\

потому что ни там ни там такого файла я не нашёл.

okkamas_knife, CoolCmd
фантастика. спасибо, теперь всё отображается как надо.

подскажите пожалуйста какой скрипт нужен для возможности сохранения фото с 500px

Подскажите, как вкл/откл Панель меню? Пробовал так

Выделить код

Код:

var bar = document.getElementById("main-menubar");
setToolbarVisibility(bar, bar.collapsed);
Выделить код

Код:

var bar = document.getElementById("menubar-items"); 
setToolbarVisibility(bar, bar.collapsed);

но отключается только  Главное меню, а сама панель вместе с расположенными на ней кнопками остаётся.
А если так

Выделить код

Код:

var bar = document.getElementById("toolbar-menubar");
setToolbarVisibility(bar, bar.collapsed);

то только отключает панель, но не включает.

del

Xant1k
попробуй заменить

Выделить код

Код:

    var hash = e.innerText;

на

Выделить код

Код:

    var hash = e.textContent;

PS посмотрел историю изменений. поржал. :)

Совершенно не работают в [firefox] 33 TvFedor RuTracker и Torrents Re-Downloader. Может есть возможность починить хотя-бы один из них.

del

Mishania, оба работают.

vitalii201
Хм, надо искать что не так, а то у человека постом выше тоже не работают.

Mishania, кстати - спасибо, я себе "Фёдора" оставил.

vitalii201
Попробовал на чистом профиле, из дополнений только Greasemonkey, не работает. попробовал 2.3beta - тоже не запустились. Можно поподробней, как оно у вас работает?

Mishania,

скрытый текст
http://i.imgur.com/R0mJ3rR.png

vitalii201
Интересное кино, вдруг заработал Фёдор! Совсем ничего не понимаю. Но лучше не трогать.

Есть скрипт который конвертирует валюту и другие величины, выводит он данные в таблице с определенным стилем, но на разных сайтах эта таблица выглядит по-разному и иногда ее сильно корёжит. Можно ли как-то изменить код, чтобы например выводилась не таблица а div элемент с уникальным id?

Выделить код

Код:

// ==UserScript==
// @name           Universal converter
// @namespace      igcc
// @include        *
// @description    Конвертация различных величин
// @grant          GM_getValue
// @grant          GM_setValue
// @grant          GM_xmlhttpRequest
// ==/UserScript==
(function (){
    var log = function() {
        if (unsafeWindow.console) unsafeWindow.console.log.apply(unsafeWindow.console, arguments);
    };

    var tabla='';
    var pos = [0,0];

    var setPos = function (d){
        d.style.top = pos[0] - 25 + 'px';
        d.style.left = pos[1] - 170 + 'px';
    }

    var showMe = function (d) {
        if(d.length < 1) {
            return;
        }
        setPos(d);
        d.style.display = "block";
    }

    var hideMe = function (d) {
        if(d.length < 1) {
            return;
        }
        d.style.display = "none";
    };

    var currencys = {
        'USD':'Доллар США',
        'RUB':'Российский рубль',
        'CNY':'Китайский юань',
        'EUR':'Евро',
        'UAH':'Украинская гривна',
        'GBP':'Британский фунт',
        'JPY':'Японская йена',
        'AUD':'Австралийский доллар',
        'CAD':'Канадский доллар',
        'HKD':'Гонконгский доллар',
        '':'',
        'cm':'Сантиметр',
        'inch':'Дюйм'
    }
    var urlConvert = function (){
        var price = $('price-igcc').value;
        var currencyFrom = $('currencyFrom').value;
        var currencyTo = $('currencyTo').value;
        GM_setValue('from',currencyFrom);
        GM_setValue('to',currencyTo);
        return 'https://www.google.ru/search?&q=' + price + '+' + currencyFrom + '+in+' + currencyTo
    };

    var $ = function(id) {
        return document.getElementById(id);
    };

    var showMenu = function (){
        showMe($('tabla-igcc'));
        convertir();
    };
    var setTabla = function (){
        var filas = []
        for(var currency in currencys){
            filas.push('<option value="' + currency + '">' + currencys[currency] + '</option>');
        }

        tabla += '<input type="hidden" id="price-igcc" value="0">';
        tabla += '<table border="0" style="line-height:normal;color:yellow;font-weight:bold;text-align:center;">';
        tabla += '    <tr>';
        tabla += '        <td colspan="3"><p id="res-igcc" style="color:yellow;"></p></td>';
        tabla += '    </tr>';
        tabla += '    <tr>';
        tabla += '        <td style="border:0px;padding:0px;color:white;"><b><label for="currencyFrom">Из:</label></b></td>';
        tabla += '        <td style="border:0px;padding:0px;color:#fff;"><select id="currencyFrom">' + filas.join('') + '</select></td>';
        tabla += '        <td style="border:0px;padding:0px;color:#fff;" rowspan="2">';
        tabla += '            <img id="swc-curr-igcc" alt="switch" src="data:image/gif;base64,R0lGODlhEgASAKUfACkyVuLk5ZOi5WiEx0li1AAAzD1Y0fr8+LzC4YCYz8bL4u7t8LS71Gd81n+Q2s/W8/H1+LXA7ubn8Orv+VNr1neK3d7h8cDK8YmY3NbZ3vj4+NPX5lVy1uvv+c7T3v///56s6G2C3ZGf27zE6vL1/Obq+drg9kJazuDj8YSU33qM3////////////////////////////////////////////////////////////////////////////////////yH5BAEHAD8ALAAAAAASABIAAAZswN9vQCwajcLhZ8lsNgdKp/Q5aD5AIYNpSmymDGBBSdr1GgjgFIkqTV1KKgNlvCxPPxFDiGm/Cwx8VXdLf4GDB3l7dYJeIxYVchaGTQ5nYA4SbEyVYBgbZIwfCCINBgpcoYN8Uap1SUewRUJBADs=" />';
        tabla += '        </td>';
        tabla += '    </tr>';

        tabla += '    <tr>';
        tabla += '        <td style="border:0px;padding:0px;color:white;"><b><label for="currencyTo">В:</label></b></td>';
        tabla += '        <td style="border:0px;padding:0px;color:#fff;"><select id="currencyTo">' + filas.join('') + '</select></td>';
        tabla += '    </tr>';

        tabla += '    <tr>';
        tabla += '        <td style="border:0px;padding:0px;color:#fff;" colspan="3"><center><button id="ver-res-igcc">Посчитать</button></center></td>';
        tabla += '    </tr>';

        tabla += '</table>';
        var divTabla = document.createElement('div');
        divTabla.id = "tabla-igcc";
        divTabla.style.position = "absolute";
        divTabla.style.display = "none";
        divTabla.style.background = "#333";
        divTabla.style.border = "0px";
        divTabla.style.padding = "5px";
        divTabla.innerHTML = tabla;

        try {
            document.body.appendChild(divTabla);
        } catch(e){
        }
    };
    var convertir = function (){
        var url = urlConvert();
        GM_xmlhttpRequest({
            method: 'GET',
            url: url,
            onload: function(r) {
                var json = r.responseText;

                var doc = document.implementation.createHTMLDocument("");
                doc.documentElement.innerHTML = json;
                json = doc.querySelectorAll('.ct-cs > div');

                $('res-igcc').innerHTML = json[0].textContent + json[1].textContent;
                $('currencyFrom').value = GM_getValue('from');
                $('currencyTo').value = GM_getValue('to');
            }
        });
    }

    function init(){
        try {
            if(window != window.top){
                return;
            }

            setTabla();
            $('currencyFrom').value = GM_getValue('from');
            $('currencyTo').value = GM_getValue('to');

            $('ver-res-igcc').addEventListener('mousedown',function (e){
                if (e.stopPropagation){
                    e.stopPropagation();
                }
                e.cancelBubble = true;
                convertir();
            },true);
            $('swc-curr-igcc').addEventListener('mousedown',function (e){
                var currencyFrom = $('currencyFrom').value;
                var currencyTo = $('currencyTo').value;
                GM_setValue('from',currencyTo);
                GM_setValue('to',currencyFrom);
                $('currencyFrom').value = GM_getValue('from');
                $('currencyTo').value = GM_getValue('to');
                convertir();
            },true);
            window.addEventListener("mousemove",
                function(e){
                    e = e || window.event;
                    pos = [e.pageY,e.pageX]
                },false);
            window.addEventListener("mousedown",
                function(e){
                    e = e || window.event;
                    var reltg = e.target
                    while (reltg.id != 'tabla-igcc' && reltg.nodeName != 'HTML' && reltg.nodeName != 'BODY'){
                        reltg= reltg.parentNode
                    }
                    if(reltg.id !== 'tabla-igcc'){
                        hideMe($('tabla-igcc'));
                    }
                },true);
            window.addEventListener("click",function (e){
                e = e || window.event;
                    if ( e.altKey && e.button == 0 &&  e.detail == 2 ) {
                    var price = parseFloat(window.getSelection().toString().replace(/[^0-9\.\,]+/,'').replace(/[\,]+/,'.'));
                    if(!isNaN(price)){
                        $('price-igcc').value = price
                        showMenu()
                    }
                }
            },false);
            window.addEventListener("contextmenu",function(e) {
                e = e || window.event;
                if(e.shiftKey) {
                    var price = parseFloat(window.getSelection().toString().replace(/[^0-9\.\,]+/,'').replace(/[\,]+/,'.'));
                    if(!isNaN(price)){
                        $('price-igcc').value = price
                        showMenu()
                    }
                    e.preventDefault();
                    e.returnValue = false;
                    e.stopPropagation();
                    return false;
                }
            },false);
        } catch(e){
        }
    }
    init();
})()

del

На некоторых сайтах, если окно неактивно останавливается таймер. Можно это изменить, или принципиально невозможно?

okkamas_knife, я немного другое хотел. Что-то вроде подмены фокуса. Т.е. вкладка, которая неактивна, считалась в фокусе (активной).

manuk это уже наверняка сделали. чеши на greasyfork.org и ищи свой обменник.

manuk пишет:

я немного другое хотел. Что-то вроде подмены фокуса. Т.е. вкладка, которая неактивна, считалась в фокусе (активной).

Вряд ли такое возможно. Там даже над активной вкладкой папку нельзя открыть.

Там даже над активной вкладкой папку нельзя открыть.

Да, фокус переходит на другое окно и таймер останавливается.

Вряд ли такое возможно.

Жаль.

Доброго времени суток!
У меня такая проблема, я хочу что бы при загрузке страницы Greasemonkey менял код страницы, поискал в интернете и нацарапал код, но он не работает.:angry: Помогите пожалуйста)
Нужно изменить var count=5 на var count=0
Вот собственно код с Greasemonkey

Выделить код

Код:

// ==UserScript==
// @name        Replace 5 to 0
// @grant       GM_getValue
// @grant       GM_setValue
// @namespace   1
// @description 1
// @version     1
// ==/UserScript==
GM_setValue(`count`,0)
console.log (`count= `+GM_getValue(`count`));

Код страницы

Выделить код

Код:

<script>
document.onkeydown = function (e) { if(e.which == 27){ return false; } } /*ESC KEY DISABLED*/
        
        var controle=0;
        
        setTimeout(function(){callTimer();}, 5000); /*Start in 5 seconds if frame not load*/
        
        function callTimer(){
            if(controle==0){
            loadTimer();
            controle=1;
            }
        }
        
        function loadTimer(){ /*START TIMER*/
        
        var count=5;
        var size_div=120/count;
        var running_bar=size_div;
        
        document.getElementById("m_wait").style.display="none";
        document.getElementById("m_counter").style.display="";        
        
        var counter=setInterval(timer, 1000);
        
            function timer()
            {
        
                if (document.hasFocus){ /*browser support function hasFocus*/    
                    if (document.hasFocus ()) { /*Protection Focus*/
                    document.getElementById("focus-msg").style.display='none';
                    count=count-1;
                    document.getElementById("m_timer").style.width=running_bar+"px";
                    running_bar = running_bar + size_div;
                    }else{
                    //document.getElementById("focus-msg").style.display='';
                    count=count;
                    }    
                }else{ /*browser not support function hasFocus, so liberate*/
                count=count-1;
                document.getElementById("m_timer").style.width=running_bar+"px";
                running_bar = running_bar + size_div;
                }
                
                                
             if (count <= 0)
                {                                                        
                clearInterval(counter);
                document.getElementById("m_timer").style.width="120px";
                document.getElementById("m_counter").style.display="none";
                var iframe = document.createElement('iframe');
                iframe.setAttribute("src", "/view-check.php?hashurl=MzM4&s=a773f5646e0c316b4200");
                iframe.frameBorder=0;
                iframe.scrolling="no";
                iframe.width="500px";
                iframe.height="50px";
                document.getElementById("m_iframe").appendChild(iframe);
                return;
                }
            
            }
        
        }
                    
    </script>

Всем доброго времени!
С недавнего времени изменился интерфейс яндекса. Яндекс стал более навязчивым. Особенно раздражает своей навязчивостью сервис "яндекс картинки"
С правой стороны крупным планом (почти на пол страницы) всегда висит изображение картинки которая отвлекает внимание при поиске. Эту картинку невозможно ни закрыть ни свернуть.
Можно ли решить эту проблему при помощи Greasemonkey и повторить интерфейс из гуглкартинок?? Чтобы с правой стороны экрана не было бы большой случайной картинки. Чтобы открывалась на пол страницы только при нажатии на ее миниатюру?


http://i66.fastpic.ru/thumb/2014/1211/1a/8ad26382d8cd97b5a028d664098eb41a.jpeg

Может кто-нибудь поправит этот скрипт:

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name        URL Shortener Unshortener
// @namespace   Smiths
// @description    Adds small button next to shortened URLs (t.co/bit.ly/goo.gl) on Twitter and other sites that will replace the shortened URLs with their real locations and vice-versa. Useful for when you don't want to blindly click links.
// @include     *
// @version     1.0.5
// @grant           GM_getValue
// @grant          GM_setValue
// @grant           GM_addStyle
// @grant             GM_xmlhttpRequest
// @grant             GM_registerMenuCommand
// @attribution    changes [d:03.05.14][u:<ul><li>Fix for oversized buttons; needed to specify size. Oops./li></ul>]
// ==/UserScript==

var b1 = "data:image/gif;base64,R0lGODlhCAAIANUAAAAAAP///xa9JhKcHxKaHw56GQ1wFwxnFR3zMRzoLxrbLBnSKhjMKRa5JRWuIxKXHg9/Gh/9NCP9OCX9OS79QTH9RDv9TT79UEr9Ww4sERQ+GBI4FhlNHhtSIBZDGlf+Z13+bGH+cGn+dy1iMnn+hXv+h37+iob+kU97U1N+V3mbfIKihYOihgsjDQ0oDxI2FQwkDg8sET1uQW2ScHCUc////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADUALAAAAAAIAAgAAAY3wFptpZqhhDXWqRS6jGo0E0mEoUQ4KdDHMkkwNLKKBKFwDF4dxUJAgBgyNU/jUTi0kJuYCyYMAgA7";
var b2 = "data:image/gif;base64,R0lGODlhCAAIANUAAAAAAP///703FpwuEpotEnokDnAhDWceDPNHHehEHNtAGtI+Gcw8GLk2Fq4zFZcsEn8lD/1LH/1OI/1QJf1XLv1ZMf1hO/1kPv1tSiMQCywUDj4cFDgaEk0jGVImG0MfFjYZEiQRDP54V/58Xf6AYf6GaWI3Lf6Tef6Ve/6Xfv6ehn5cU5J0bZR3cJuAeaKJgygSDSwUD25GPXtXT6KIgv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADUALAAAAAAIAAgAAAY3wFotBItxhLXMofBofGoaA4QgWCg8oIFDgZBUZBtGYmIRjVadCAVTOqVaNdOFhFK9kDOWiyYMAgA7";
var b3 = "data:image/gif;base64,R0lGODlhCAAIAPYEAKKUh5uLfZKAcXtlUv7Ejf67gf6xaP2dRGJIMJSDdP6/hP66f/61cP2kUf2WNf2OJk0zG35pVv6uZP6rXv2cQf2RLOiCI8xyHj4pFm5VQP2XOP2QKvOII9t6IK5fGpxXFjYjE1I2HdJ1Hr1pG5pWFn9HEnA+ECwdD0MsGLlnG5dSFnpEEWc6DyMXDDglFCwdECgaDiQYDaGifJubc5KSZ3t7SqGiffz+ff7+cfv+V/r9NGFiKZSUavz+dP7+b/v+X/r9QPn9JPn9FUxNFn1+Tvv+U/v+Tfr9Mfn9G+ToE8nMED0+Em5uOfn9J/n9Ge/zE9jbEa6uDpqcDDY2EFJSGM/SELq9D5iaDH1/Cm5wCSssDENDE7a5D5eXDHh6CWVnCCMjCjc4ECwrDSgoCyQkCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFCgBlACwAAAAACAAIAAAHPIBlZQAAAgOCgwQKBg2HAAQEDA0aFQgRBhIHFRYXLhkaGxwdHiQgIR0iKSQlJi9lCB4qKywtiC4vL2KCgQAh+QQFCgBlACwAAAAACAAIAAAHO4BlZTY2NDWCgzc9OUCHNjc3P0BNSDtEOUU6SElKYUyUT1BRV1NUUFVWV1hZWmVUXF1eX2SIU2JkU4KBADs=";

function getRealURL(urlID) {
    var theURL,link;
    link = document.querySelector('a[slID="'+urlID+'"]');
    theURL = link.getAttribute('data-full-url');
    var plusBox = document.getElementById('bsl'+urlID.substr(2));
    plusBox.innerHTML = '<img title="Click to fetch full URL" style="width:8px;height:8px;padding:2px;border:none" src="'+b3+'" alt="[+]">';
    GM_xmlhttpRequest({
        method:"HEAD",
        url:theURL,
        headers:{ "User-Agent":"monkeyagent", "Accept":"text/monkey,text/xml" },
        onload:function(content){
            var minusBox = document.createElement('a');
            
            link.setAttribute('smgm_origURL',link.innerHTML);
            link.setAttribute('smgm_origfURL',theURL);
            var newLink = link.cloneNode(true);
            newLink.href = content.finalUrl;
            newLink.innerHTML = content.finalUrl;
            link.parentNode.replaceChild(newLink,link);

            minusBox.innerHTML = '<img title="Click to collapse back to shortened URL" style="width:8px;height:8px;padding:2px;border:none" src="'+b2+'" alt="[-]">';
            minusBox.href="javascript:void(0);";
            minusBox.id = 'bsl'+urlID.substr(2);
            minusBox.addEventListener("click",function(){
                this.innerHTML = '<img title="Click to fetch full URL" style="width:8px;height:8px;padding:2px;border:none" src="'+b1+'" alt="[+]">';
                var aLink = document.querySelector('a[slID="'+this.id.substr(1)+'"]');
                aLink.setAttribute('data-full-url',aLink.getAttribute('smgm_origfURL'));
                aLink.innerHTML=aLink.getAttribute('smgm_origURL');
                aLink.href=aLink.getAttribute('smgm_origfURL');
                aLink.target="_blank";
                this.addEventListener("click",function(){getRealURL(this.id.substr(1));},false);
            },false);
            plusBox.parentNode.replaceChild(minusBox,plusBox);
        }
    })
}

function unescapeHTML(s){return s.replace('&amp;', '&').replace('&lt;',"<").replace('&gt;','>').replace('&quot;','1"').replace(''','\'');}

var lc = 0;
document.addEventListener('DOMNodeInserted',function(e){
    window.setTimeout(function(){
        var newLinks = document.querySelectorAll('a[href*="po.st/"],a[href*="img.ly/"],a[href*="bit.ly/"],a[href*="goo.gl/"],a[href*="t.co/"],a[href*="db.tt/"],a[class*="extLink"],a[class*="url-ext"],a[class*="twitter-timeline-link"]');
        if (newLinks.length > 0)
        {
            for (var i = 0; i < newLinks.length; i++) {
                if (newLinks[i].className.match(/\bsmgm_usTitle\b/) == null && newLinks[i].innerHTML.indexOf('<img') < 0)
                {
                    lc++;
                    var plusBox = document.createElement('a');
                    newLinks[i].setAttribute('slID','sl'+lc);
                    if (newLinks[i].getAttribute('data-full-url') == null) newLinks[i].setAttribute('data-full-url',newLinks[i].href); 
                    plusBox.innerHTML = '<img title="Click to fetch full URL" style="width:8px;height:8px;padding:2px;border:none" src="'+b1+'" alt="[+]">';
                    plusBox.href="javascript:void(0);";
                    plusBox.id = "bsl" + lc;
                    plusBox.addEventListener("click",function(){getRealURL(this.id.substr(1));},false);
                    newLinks[i].parentNode.insertBefore(plusBox,newLinks[i].nextSibling);
                    (newLinks[i].className == "") ? newLinks[i].className = "smgm_usTitle" : newLinks[i].className = newLinks[i].className + " smgm_usTitle";
                }
            }
        }
        }, 200);}
    , false);


(с ~37 ночнушки ругается на: "Use of Mutation Events is deprecated. Use MutationObserver instead" и отказывается работать)

Или посоветуйте какой-нибудь другой "раскукоживатель" коротких ссылок.

Спасибо.

turbot пишет:

какой-нибудь другой "раскукоживатель" коротких ссылок.

Действующая версия только до FF35 , или ждать следующую , или ставить gm-nightly https://arantius.com/misc/gm-nightly

Проблема не в гризманки (он у меня работает без проблем), а в:
https://developer.mozilla.org/en-US/doc … ion_events

Deprecated
This feature has been removed from the Web. Though some browsers may still support it, it is in the process of being dropped. Do not use it in old or new projects. Pages or Web apps using it may break at any time.

Видимо в ночнушках уже выпилили поддержку.

turbot пишет:

Видимо в ночнушках уже выпилили поддержку.

38.0a1 (2015-02-13). Поддержка есть. Как проверил:
Закомментировал бяку

скрытый текст

Выделить код

Код:

/*.replace(''','\'')*/;}


extensions.greasemonkey.fileIsGreaseable > true
Создал и открыл html файл. Появился зелёный кружок.
скрытый текст

Выделить код

Код:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Test</title>
    </head>
    <body>
        <center></center>
        <script>
            setTimeout(function() {
                var a = document.createElement("a");
                a.href = "http://goo.gl/bla";
                a.textContent = "Short Link";
                document.body.firstElementChild.appendChild(a);
            }, 500);
        </script>
    </body>
</html>

Dumby
Ну я не настаиваю, может и не в этом причина (просто в консоль только на это ругается). Но скрипт не работает. Кружок и у меня появляется (но теперь не всегда. Например, на твиттере - появляется только при отключенных скриптах), а вот "раскукоживаться" - ссылки перестали.

ко всем.
подскажите,можно с помощью скриптов удалять куски страниц содержащие ключевые слова. и чему и как надо учиться чтоб пилить скрипты под свои нужды.
как понимаю под каждый ресурс надо писать новый скрипт иначе будет резать криво?

na_voine пишет:

ко всем.
подскажите,можно с помощью скриптов удалять куски страниц содержащие ключевые слова. и чему и как надо учиться чтоб пилить скрипты под свои нужды.
как понимаю под каждый ресурс надо писать новый скрипт иначе будет резать криво?

javascript:document.getElementsByTagName('html')[0].contentEditable=true;
это можно в избраное добавить в поле ссылка и когда запускаешь можно удалять, редактировать все на страничке

Сегодня после обновления до 3.0 заметил что [firefox] стал потреблять оперативки примерно в 2 раза больше. Никто такое не наблюдает?

na_voine пишет:

с помощью скриптов удалять куски страниц содержащие ключевые слова

Есть готовый скрипт, от Lain_13.

Подскажите, как достучаться к переменной seconds на странице, которая запускается во фрейме?

<iframe src="/a.htm" style="width:100%; height:500px;" scrolling="no" marginheight="0" marginwidth="0" frameborder="0"></iframe>

unsafeWindow.seconds пишет что переменная не определена.

Переменная определяется так:

Выделить код

Код:

    <script language="javascript">
        document.getElementById('value').focus();
        var seconds = 30;
        function display_countdown()
        {
            if( seconds < 0 ) {
                seconds = 0;
            }
            document.getElementById('countdown').innerHTML = 'Countdown:&nbsp;<strong>' + seconds + '</strong>';
            seconds--;
            setTimeout( "display_countdown()", 1000 );
        }
        display_countdown();

Как убрать таймер ожидания установки скрипта?

extensions.greasemonkey.installDelay

turbot
Туплю, спасибо.

А где можно скачать 3,1 финал? На АМО - нету.
http://s018.radikal.ru/i522/1504/9d/e9cf569b1beb.png

Vladik пишет:

А где можно скачать 3,1 финал? На АМО - нету.

Как нет, а это что?
https://addons.cdn.mozilla.net/user-med … 3.1-fx.xpi

Помогите пожалуйста со скриптом,

скрытый текст
Есть такая строчка,
<span id="commentsSort_2" class="groupHeadingText commentSortOptions commentSortOptionsActive" href="#">Новые</span>

Нужно, чтобы "Новые" - менялись на "Старые" и id="commentsSort_2" на id="commentsSort_3"

Заранее спасибо.

Приветствую.
Подскажите скрипт, чтобы убрать что на скрине.
http://savepic.net/6632901m.png
AdBlock -ом убрать не получается (не знаю как).
Вот исходник страницы.

скрытый текст

Выделить код

Код:

}("<div class=\"head-stripe i-bem\" data-bem=\"{&quot;head-stripe&quot;:{&quot;is_geo_stripe&quot;:false,&quot;text2_url&quot;:&quot;https://yabs.yandex.ru/count/IRZN8L-XAwG400G0gQ10022EjdxYKWLIbGkR0M-CYBRH0mi7feK9YhaTS002gWsbfkow0Oq1aA0V0jwHjMfiFmoJXGr2em6kz02QhrE8lnC5iG6oa00CljRH0mjN0M2_r4pn2dS0OC7__________m_2ydSCif62wx8FnOyFUWu0&quot;,&quot;background_color_file2&quot;:&quot;&quot;,&quot;background_image&quot;:&quot;https://yabs.yandex.ru/resource/DF8uxlQ5fzkVo8a3uCoMA8_banana_20141031_cez_str_but_3_instal.png&quot;,&quot;void_url&quot;:&quot;https://yabs.yandex.ru/count/IRZN8GKXGXu400G0gQ10022EjdxYKWLIbGkR0M-CYBRH0mi7feK9YhaTS002gXAbfkow0Oq1aA0V0jwHjMfiFmoJXGr2em6kz02QhrE8lnC5iG6oa00CljRH0mjN0M2_r4pn2dS0OC7__________m_2ydSCif62wx8FnOyFUWu0&quot;,&quot;void_target&quot;:&quot;_blank&quot;,&quot;close_counter&quot;:&quot;https://yabs.yandex.ru/count/IRZN8Qab1kC400G0gQ10022EjdxYKWLIbGkR0M-CYBRH0mi7feK9YhaTS002gX-bfkow0Oq1aA0V0jwHjMfiFmoJXGr2em6kz02QhrE8lnC5iG6oa00CljRH0mjN0M2_r4pn2dS0OC7__________m_2ydSCif62wx8FnOyFUWu0&quot;,&quot;type&quot;:&quot;shift&quot;,&quot;height&quot;:&quot;30&quot;}}\"><div class=\"head-stripe__elements\"><img class=\"head-stripe__image\" src=\"https://yabs.yandex.ru/resource/DF8uxlQ5fzkVo8a3uCoMA8_banana_20141031_cez_str_but_3_instal.png\"/></div><div class=\"head-stripe__table\"><div class=\"head-stripe__col head-stripe__col_age_restriction\"><div class=\"head-stripe__age\">0+</div></div><div class=\"head-stripe__col head-stripe__col_text_1\"><a class=\"link link link_counter_yes head-stripe__text1\" target=\"_blank\" href=\"https://yabs.yandex.ru/count/IRZN8TGarfW400G0gQ10022EjdxYKWLIbGkR0M-CYBRH0mi7feK9YhaTS002gWQbfkow0Oq1aA0V0jwHjMfiFmoJXGr2em6kz02QhrE8lnC5iG6oa00CljRH0mjN0M2_r4pn2dS0OC7__________m_2ydSCif62wx8FnOyFUWu0\" onmousedown=\"w(this, '707.1432.232');\">Яндекс.Браузер с режимом Турбо — быстрая загрузка даже при медленном интернете</a></div><div class=\"head-stripe__col head-stripe__col_text_2\"><a class=\"link link link_counter_yes head-stripe__text2\" target=\"_blank\" href=\"https://yabs.yandex.ru/count/IRZN8L-XAwG400G0gQ10022EjdxYKWLIbGkR0M-CYBRH0mi7feK9YhaTS002gWsbfkow0Oq1aA0V0jwHjMfiFmoJXGr2em6kz02QhrE8lnC5iG6oa00CljRH0mjN0M2_r4pn2dS0OC7__________m_2ydSCif62wx8FnOyFUWu0\" onmousedown=\"w(this, '707.1432.494');\">Установить</a></div><div class=\"head-stripe__col head-stripe__col_close_yes\">&nbsp<span class=\"link link link_counter_yes head-stripe__close\" role=\"button\" tabindex=\"0\" onmousedown=\"w(this, '707.1432.486');\"><span class=\"head-stripe__x\">×</span></span></div></div></div>");</script><div class="no-connection i-bem" data-bem="{&quot;no-connection&quot;:{}}"><div class="no-connection__wrapper"><div class="no-connection__message"></div><button class="button button_size_m button_theme_normal no-connection__reload i-bem" data-bem="{&quot;button&quot;:{}}" role="button" type="button" onmousedown="w(this, '143.1395');"><span class="button__text">Попробовать еще раз</span></button></div></div></div><div class="paranja paranja_state_close paranja_theme_normal z-index-group i-bem" data-bem="{&quot;paranja&quot;:{&quot;rel&quot;:[{&quot;elem&quot;:&quot;.header__action_type_srv&quot;,&quot;event&quot;:&quot;pressed&quot;,&quot;method&quot;:&quot;open&quot;},{&quot;elem&quot;:&quot;.header__action_type_srv&quot;,&quot;event&quot;:&quot;released&quot;,&quot;method&quot;:&quot;close&quot;}]}}"></div><div class="footer clearfix" role="contentinfo"><div class="footer__column footer__column_side_right"><a class="link link link_counter_yes footer__link" href="//yandex.ru/search/customize?retpath=http%3A%2F%2Fyandex.ru%2Fsearch%2F%3Flr%3D213%26text%3D%25D0%25B0" onmousedown="w(this, '295.1137');">Настройки</a><a class="link link_visibility_hidden link link_counter_yes footer__link" target="_blank" href="//mobile.yandex.ru" onmousedown="w(this, '295.1006');">Приложения</a><a class="link link link_counter_yes footer__link" target="_blank" href="//feedback2.yandex.ru/newserp/" onmousedown="w(this, '295.296');">Обратная связь</a><a class="link link link_counter_yes footer__link" target="_blank" href="//help.yandex.ru/search/" onmousedown="w(this, '295.177');">Помощь</a><a class="link link link_counter_yes footer__link" target="_blank" href="http://advertising.yandex.ru/kupislova.xml?advertising" onmousedown="w(this, '295.1');">Реклама</a><a class="link link link_counter_yes footer__link" target="_blank" href="//stat.yandex.ru/stats.xml?ReportID=-225&amp;ProjectID=1" onmousedown="w(this, '295.989');">Статистика</a><a class="link link link_counter_yes footer__link" target="_blank" href="//company.yandex.ru/legal/termsofuse/" onmousedown="w(this, '295.990');">Лицензия на поиск</a><a class="link link link_counter_yes footer__link" target="_blank" href="//company.yandex.ru/" onmousedown="w(this, '295.280');">О компании</a><div class="copyright">&copy;&nbsp;1997&ndash;2015&nbsp;&nbsp;<span class="copyright__name">ООО «Яндекс»</span></div></div></div><div class="serp serp__spin i-bem" data-bem="{&quot;serp&quot;:{&quot;uniqId&quot;:&quot;search&quot;,&quot;connectionError&quot;:{&quot;message&quot;:&quot;Проверьте соединение с интернетом&quot;},&quot;resultError&quot;:{&quot;message&quot;:&quot;Не удалось получить результаты&quot;}}}"></div><script>w(this, '471.143.842', null, "//yandex.ru/clck/safeclick/data=AiuY0DBWFJ7IXge4WdYJQSaYtyyri96F9995cpcmF2sLPBI2lnr9NohD8yaoyE3izOvpdg58xIrdOs_O1GAF8FO5E7yLk8XW5X91oYA-7aWK8AUHslaADRCJThH7S9NHhaLFDNeDTPB8ge8FtENa809tw2NcSdQ3CzeyoOKYmUb2lBewj8UtvhF0G-AQMfL5/sign=c72b934aa5ba9f53e3c1fa41a023e48a/keyno=0", null, window.startPageLoad);</script><script src="//yastatic.net/jquery/1.8.3/jquery.min.js"></script><script src="//yastatic.net/web4/0x2a71b6b/pages-desktop/search/_search.ru.js"></script><script>var _borschik=function(){var t=this._borschik||function(i){return!(i in t||t[i]++)};return t}();_borschik("wVvHjvLR9J9kXauxJ1T-1nSyUMA")&&!function(t,i){var n="";


Извините, без переносов.

стилем этим убирается
.head-stripe {display: none;}

Бумбик
Спасибо. Обошёлся установкой скрипта No Yandex Ads.
Как рукой сняло.

Я что то пропустил? Не открывается Greasy Fork. Опять куда то скрипты переехали?

villa7
Пару дней назад userstyles.org переезжал на новый сервер. Может, в этом дело (владелец же один)?

turbot
Сервер пьяный, понятно, будем ждать:)

Как-то видел дополнение, которое очищает поля ввода и пр. прокруткой мышиного колеса. Но ставить дополнение ради такой мелочи неохота. Может кто скрипт присоветует? Или напишет... ;)

Ultima2m
Для очистки поля поиска колесом есть код для инициализации, в любую кнопку положить. Туда же и для других полей можно код добавить, наверное.

Хрюн
Спасибо
Еще бы текстовые поля подключить.:D Памагите хто може.

И еще вопрос.
Есть несколько скриптов "линкификаторов"
например этoт:

скрытый текст

Выделить код

Код:

// ==UserScript==
// @id             Linkification
// @name           Linkification
// @version        1.0
// @namespace      http://userscripts.org/users/splurov/
// @author         Splurov
// @description    Linking text
// @run-at         document-end
// @include        *
// ==/UserScript==


(function(){

// (c) http://data.iana.org/TLD/tlds-alpha-by-domain.txt
var domains = ['ac', 'ad', 'ae', 'aero', 'af', 'ag', 'ai', 'al', 'am', 'an', 'ao', 'aq', 'ar', 'arpa', 'as', 'asia', 'at', 'au', 'aw', 'ax', 'az', 'ba', 'bb', 'bd', 'be', 'bf', 'bg', 'bh', 'bi', 'biz', 'bj', 'bm', 'bn', 'bo', 'br', 'bs', 'bt', 'bv', 'bw', 'by', 'bz', 'ca', 'cat', 'cc', 'cd', 'cf', 'cg', 'ch', 'ci', 'ck', 'cl', 'cm', 'cn', 'co', 'com', 'coop', 'cr', 'cu', 'cv', 'cx', 'cy', 'cz', 'de', 'dj', 'dk', 'dm', 'do', 'dz', 'ec', 'edu', 'ee', 'eg', 'er', 'es', 'et', 'eu', 'fi', 'fj', 'fk', 'fm', 'fo', 'fr', 'ga', 'gb', 'gd', 'ge', 'gf', 'gg', 'gh', 'gi', 'gl', 'gm', 'gn', 'gov', 'gp', 'gq', 'gr', 'gs', 'gt', 'gu', 'gw', 'gy', 'hk', 'hm', 'hn', 'hr', 'ht', 'hu', 'id', 'ie', 'il', 'im', 'in', 'info', 'int', 'io', 'iq', 'ir', 'is', 'it', 'je', 'jm', 'jo', 'jobs', 'jp', 'ke', 'kg', 'kh', 'ki', 'km', 'kn', 'kp', 'kr', 'kw', 'ky', 'kz', 'la', 'lb', 'lc', 'li', 'lk', 'lr', 'ls', 'lt', 'lu', 'lv', 'ly', 'ma', 'mc', 'md', 'me', 'mg', 'mh', 'mil', 'mk', 'ml', 'mm', 'mn', 'mo', 'mobi', 'mp', 'mq', 'mr', 'ms', 'mt', 'mu', 'museum', 'mv', 'mw', 'mx', 'my', 'mz', 'na', 'name', 'nc', 'ne', 'net', 'nf', 'ng', 'ni', 'nl', 'no', 'np', 'nr', 'nu', 'nz', 'om', 'org', 'pa', 'pe', 'pf', 'pg', 'ph', 'pk', 'pl', 'pm', 'pn', 'pr', 'pro', 'ps', 'pt', 'pw', 'py', 'qa', 're', 'ro', 'rs', 'ru', 'rw', 'sa', 'sb', 'sc', 'sd', 'se', 'sg', 'sh', 'si', 'sj', 'sk', 'sl', 'sm', 'sn', 'so', 'sr', 'st', 'su', 'sv', 'sy', 'sz', 'tc', 'td', 'tel', 'tf', 'tg', 'th', 'tj', 'tk', 'tl', 'tm', 'tn', 'to', 'tp', 'tr', 'travel', 'tt', 'tv', 'tw', 'tz', 'ua', 'ug', 'uk', 'us', 'uy', 'uz', 'va', 'vc', 've', 'vg', 'vi', 'vn', 'vu', 'wf', 'ws', 'ye', 'yt', 'yu', 'za', 'zm', 'zw'];

// (c) http://yellow5.us/firefox/linkification/
var tagsForSkip = ['a', 'applet', 'area', 'embed', 'frame', 'frameset', 'head', 'iframe', 'img', 'map', 'meta', 'noscript', 'object', 'option', 'param', 'script', 'select', 'style', 'textarea', 'title'];

var inArray = function(value, items) {
    for (var i = 0; items[i] && value != items[i]; i++);
    return value == items[i];
}

var urlsRegExp = /(^|[\s()\[\]_:~+@*"'>])((?:https?|ftp|irc):\/\/)?([-a-z\d;:&=+$,%_.!~*'()]+@)?((?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:(www|irc|ftp)\.)?(?:(?:[a-z\d]|[a-z\d][a-z\d-]*[a-z\d])\.)+([a-z]{2,6}))(:\d+)?(\/(?:[-\w.!~*'()%:@&=+$,;\/]*[\w~*%@&=+$\/])?(?:\?(?:[-\w;\/?:@&=+$,.!~*'()%\[\]|]*[\w\/@&=+$~*%])?)?(?:#(?:[-\w;\/?:@&=+$,.!~*'()%]*[\w\/@&=+$~*%])?)?|\b)/i

var linksCounter = 0;

var current = document.body;
while (current) {
    if (current.nodeName == '#text' && (match = current.nodeValue.match(urlsRegExp)) && inArray(match[6], domains)) {
        var url;
        if (match[3] && ! match[2] && ! match[5] && ! match[8] && (match[3].indexOf(':') == -1 || match[3].indexOf('mailto:') == 0)) {
            url = (match[3].indexOf('mailto:') == -1 ? 'mailto:' : '')
                    + match[3]
                    + match[4];
        }
        else {
            url = (match[2] ? match[2] : (! match[5] || match[5] == 'www' ? 'http' : match[5]) + '://')
                    + (match[3] ? match[3] : '')
                    + match[4]
                    + (match[7] ? match[7] : '')
                    + (match[8] ? match[8] : '');
        }
        if (url) {
            var range = document.createRange();
            range.setStart(current, match.index + match[1].length);
            range.setEnd(current, match.index + match[0].length);
            var a = document.createElement('a');
            a.setAttribute('href', url);
            a.setAttribute('class', 'linkified');
            a.appendChild(range.extractContents());
            range.insertNode(a);
            range.detach();
            linksCounter++;
        }
    }
    if (current.tagName && !inArray(current.tagName.toLowerCase(), tagsForSkip) && current.firstChild) {
        current = current.firstChild;
    }
    else if (current.nextSibling) {
        current = current.nextSibling;
    }
    else {
        do {
            current = current.parentNode;
        } while (!current.nextSibling && current.parentNode);
        current = current.nextSibling;
    }
}

if (linksCounter > 0) {
    var style = document.createElement('style');
    style.type = 'text/css';
    style.appendChild(document.createTextNode('a.linkified:before {content: "#"; color: #e00;}'));
    document.getElementsByTagName('head')[0].appendChild(style);
}

})();


У всех есть общая проблема:
если в текст ссылки случайно затесался пробел, то
часть ссылки после него остается некликабельной.
Можно как-то исправить или есть пофиксенный скрипт?

При установке скрипта появляется счетчик.
Это где-то регулируется или в дополнении зашито?

Ultima2m
extensions.greasemonkey.installDelay;0

Подскажите, пожалуйста, решение. Есть, вот например, ссылка imgur.com/r/Cinemagraphs/Jxi6Fa1 . Там внутри на самом деле gif, но на уровне сайта там упаковывают толи в mp4, толи в какой-то gifv, плюс непонятно зачем там flash (flash block показывает, что заблокировал элемент). Как сделать, чтоб было по-человечески, просто gif файл в том блоке. Или на крайний случай что-то вроде редиректа с imgur.com/r/Cinemagraphs/Jxi6Fa1 на i.imgur.com/Jxi6Fa1.gif . Но желательно всё же вырезать все эти извращения по всему сайту. Подсобите скриптом или иным решением.

CGGB
Direct Images, но почему-то именно с травой не срабатывает, спросите у Infocatcher'a.

CGGB
Откуда там .gif если там .webm

Выделить код

Код:

SOURCE
namespaceURI: XHTML
margin: 0
border: 0
padding: 0
src = //i.imgur.com/Jxi6Fa1.webm
type = video/webm

Kamui пишет:

Direct Images, но почему-то именно с травой не срабатывает, спросите у Infocatcher'a.

Вроде, подправил: если перейти на http://imgur.com/Jxi6Fa1?tags, там будет уже оригинальный .gif.

Только у меня?: "Greasemonkey 3.4 – новые скрипты не устанавливаются, старые - не редактируются. С 3.3 всё нормально".
UPD: Сейчас на 3.4 всё работает. Ничего не ставилось и не удалялось. (?)

Тоже были проблемы с разными скриптами на Greasemonkey. Заменил на Scriptish, и все ок! )

Kamui,
Infocatcher,
Спасибо

Уважаемые господа!
А скажите пожалуйста!
Можно ли в с помощью GreasyMonkey править DOM-дерево страницы?
А сохранять инфу со страницы на диск без запроса пользователя (автоматом)

Доктор ТуамОсес пишет:

Можно ли в с помощью GreasyMonkey править DOM-дерево страницы?

можно.

Доктор ТуамОсес пишет:

А сохранять инфу со страницы на диск без запроса пользователя (автоматом)

нет, запрос будет. если запрос не нужен, нужно писать полноценное лисье расширение.

CoolCmd пишет:

нет, запрос будет

Спасибо большое. Вы сэкономили мне УЙМУ времени, которое я бы убил пытаясь написать парсер (сохраняющий выбранные куски ВЕБ-страниц на диск) с помощью "Засаленной Обезьяны ("автомеханика")").

А в чем причина ограничений?
В том что "обезьяна" позволяет просто писать чиста жабаскрипты, а жабаскрипты ПО ОПРЕДЕЛЕНИЮ не могут обмениваться инфой с локал хостом (через диск, или буфер обмена)?

ДА?

03-11-2015 19:14:51

CoolCmd пишет:

нужно писать полноценное лисье расширение

Понял. Просто JS-ом здесь не обойтись.

Спасибо.

Буду гуглить разные фреймворки и надстройки. И прочие извраты "для программирования в брОузере"

Доктор ТуамОсес пишет:

В том что "обезьяна" позволяет просто писать чиста жабаскрипты, а жабаскрипты ПО ОПРЕДЕЛЕНИЮ не могут обмениваться инфой с локал хостом (через диск, или буфер обмена)?

у GM есть GM_xmlhttpRequest, но он не дает доступа к file:///, не знаю почему, возможно по соображениям безопасности.

Доктор ТуамОсес пишет:

Буду гуглить разные фреймворки и надстройки. И прочие извраты "для программирования в брОузере"

мутная тема...

CoolCmd пишет:

мутная тема...

А что делать?
Мне нужно инфу со страницы сливать на локальный диск. Причем в фоне. Без участия юзверя (то бишь меня)

Приветствую.
Есть скрипт, отключающий авто-воспроизведение на Mail.ru: WE NO NEED AUTOPLAY.
Может кто-нибудь встречал подобный для sportbox.ru или сможет написать?

Перестало работать в последних версиях FF <a href="javascript:lcl()"> для создаваемого меню. При щелчке не открывается менюшка.
Как исправить подскажите пожалуйста?
Сам скрипт тут http://userscripts-mirror.org/scripts/show/68387

Здравствуйте не работает GoogleMonkeyR :angry: поделитесь рабочим.

broker, у меня он тоже работает через раз. Надо зайти в настройки поиска, после чего нажать кнопку "сохранить изменения", но так надо делать постоянно :(

PEAKTOP Не радует ситуация надеюсь скоро починять :(

broker, попробуй эту версию. Вроде работает

PEAKTOP
У меня та самая версия не работает, ни в скриптиш ни в монкей:angry: мозилка 38.4

Здравствуйте, подскажите что поправить, чтобы скрипт заработал в Greasemonkey

Выделить код

Код:

// ==UserScript==
// @name        width
// @include       *
// @version     1
// ==/UserScript==

javascript:(function(){function%20t(f){a=d.createNodeIterator(d,1,f,false);while(a.nextNode()){}}var%20d=document;t(function(e){x=e.offsetLeft;l=e.offsetParent;while(l!=null){x+=l.offsetLeft;l=l.offsetParent}var%20w=d.documentElement.clientWidth-x;var%20s=e.style;if(s.marginLeft)w-=s.marginLeft;if(s.marginRight)w-=s.marginRight;if(s.paddingLeft)w-=s.paddingLeft;if(s.paddingRight)w-=s.paddingRight;if(s.borderSize)w-=s.borderSize;w-=d.defaultView.innerWidth-d.documentElement.offsetWidth;if(e.tagName=='IMG'){h=e.clientHeight*w/e.clientWidth;s.maxHeight=h}s.maxWidth=w+'px'})})();

//.user.js

этот же скрипт с закладки нормально работает.

Привет всем.
Есть проблема со скриптом
Здесь чуть другая версия, но проблема та же
скрипт ломает отображение кнопок на некоторых сайтах

Перестал работать addons.mozilla.org Language Redirect . Как исправить?

У меня вопрос касающийся больше расширения чем скриптов. Иногда приходится включать-выключать скрипты. Жму на обезьянку - появляется меню - отключаю скрипт - меню сворачивается. Опять жму на обезьянку - появляется меню - включаю другой скрипт - меню сворачивается. Как сделать что было так, нажал на обезьянку - появилось меню - отключил один скрипт - включил другой - нажал на обезьянку - меню закрылось. Может стиль какой, или кнопка для CB?

Mishania, в меню есть пункт "Управление скриптами", включай/отключай сколько захочешь.

PEAKTOP
Вы меня не поняли, я хочу чтоб было проще. Когда я жму на иконку у меня показаны скрипты которые я использую на странице. А если использовать "Управление скриптами" то открывается страница со всеми скриптами которые установлены в гризманке. А у меня не два скрипта установлены.

Mishania пишет:

или кнопка для CB?

С мыши чтоб меню не закрывалось что ли :/

скрытый текст

Выделить код

Код:

((listener, popup = document.getElementById("greasemonkey-tbb").firstChild) =>
    ["mousedown", "popuphiding"].forEach(type => addEventListener(type, listener, false, popup))
)({handleEvent(e) {
    if (e.type != "popuphiding") this.flag = e.target.script && !e.button;
    else if (this.flag) e.preventDefault(setTimeout(obj => obj.flag = false, 50, this));
}});

Mishania, всё правильно понял, но т.к. Jscript'ом не владею, то посоветовал этот способ.

Dumby
Отлично! Как раз то что надо.

Скажите пожалуйста как из меню "Экстра", удалить Greasemonkey?
Вот это не работает:

menu[label="Extras"] menuitem[label="Greasemonkey"] {
display: none !important;
}

Подскажите пожалуйста, есть ли возможность загрузить js скрипт на какой-то хостинг (например http://test.test/user.js), а в самом скрипте для Greasemonkey прописать ссылку на загруженный js и выполнять его? Как бы все тело скрипта должно находится на другом ресурсе.
Что-то вроде такого:

// ==UserScript==
//....................
// ==/UserScript==

(function (window, undefined) {

#include "http://test.test/user.js"

})(window);



А еще скажите... Мне надо сделать инжект в уже существующую функцию. Правильно ли использовать конструкцию window['main_fuction'] = main_fuction_custom; ? Может для этого есть другие методы?

Всех скриптописателей с праздником! Прошу помочь. Нашел скрипт для себя, но чутка треба поправить. Сам скрипт Universal_Links_Checker_v7.user для конвертации текстовых ссылок в кликабельные. Работает хорошо, но хотелось бы, что бы ссылки выделялись цветом, а то не всегда видишь их. К примеру желтый фон и фиолетовая ссылка. Помогите знатоки.
Скрипт большой, не влазит. По ссылке http://rghost.ru/86Z5ppqfL

подскажите пожалуйста, как на сайте http://www.flirt4free.com в таблице моделей оставить только те у которых пометка in show, остальные скрыть? http://static1.nagi.ee/i/p/982/0/2455021991f06c_o.jpg Можно такой скриптик написать? Спасибо

Последнее время «подкладывают» гирпессылки внутри которых не тот адрес что виден. Есть ли какой скрипт исправляющий это?
Пример: https://forum.mozilla-russia.org/viewtopic.php?id=5499&p=26

Xant1k пишет:

Последнее время «подкладывают» гиперссылки внутри которых не тот адрес что виден. Есть ли какой скрипт исправляющий это?
Пример: https://forum.mozilla-russia.org/viewtopic.php?id=5499&p=26

При наведении на ссылки курсором в левом нижнем углу браузера же показывается ссылка...

udalov пишет:

При наведении на ссылки курсором в левом нижнем углу браузера же показывается ссылка...

Совсем не обязательно... Если на ссылку навешен обработчик мышиного события, то переход может быть совсем не туда, куда обещает строка статуса. Google вам в качестве примера: наведите мышь на любую ссылку в поисковой выдаче, а потом щёлкните по ссылке правой кнопкой и полюбуйтесь на чудо.

yup пишет:

наведите мышь на любую ссылку в поисковой выдаче, а потом щёлкните по ссылке правой кнопкой и полюбуйтесь на чудо.

И что же такого чудесного в контекстном меню? :)

voqabuhe пишет:

И что же такого чудесного в контекстном меню? :)

В меню - ничего. А в строке статуса?

yup пишет:

В меню - ничего. А в строке статуса?

И чё? Что показало, то и открылось. И причём тут ПКМ, зачем тогда меню открывали? :)

voqabuhe пишет:

И чё? Что показало, то и открылось.

Вообще-то, если в браузер не добавлено какое-то антигугловское средство, то при наезде мышкой на ссылку в строке статуса показывается один URL, а после клацания - совсем другой. И браузер первым делом пойдёт на него, а вовсе не на первоначально показываемый.

voqabuhe пишет:

зачем тогда меню открывали?

А выскакивание меню - так, побочный эффект :D

yup
После отключения Remove fake links, понял о чём ты. :D А я и забыл, что его когда-то ставил.

yup пишет:

Совсем не обязательно... Google вам в качестве примера: наведите мышь на любую ссылку в поисковой выдаче, а потом щёлкните по ссылке правой кнопкой и полюбуйтесь на чудо

Сделал. Из всех ссылок с первой страницы выдачи прямая ссылка не показалась только в одном случае, со всеми остальными было всё нормально. Может, зависит от браузера и настроек?

udalov пишет:

Может, зависит от браузера и настроек?

Скорее, от установленных скриптов/дополнений. Вон, у voqabuhe оказался Remove fake links, а подобных ему пару десятков понасоздано.
И ещё отрубание Javascript помогает (через NoScript, например).

Но речь же не о Googlе, это просто общедоступный пример того, что тексту URL в строке статуса нельзя доверять. Тот же Remove fake links - он ведь сугубо под Google и Яндекс заточен.

Здравствуйте.
Подскажите, где можно почитать про основные команды, которыми можно писать скрипты для Гризманки? Например: открыть ссылку - такая то команда, вывести сообщение - такая то и так далее. Вот это только https://wiki.greasespot.net/Tutorials ?
Наподобие вот такого http://wiki.imacros.net/Command_Reference для Аймакроса.

udalov
Ничего своего собственного GreaseMonkey практически не имеет. Обычный JavaScript, который исполняется в контексте страницы и которому доступно ровно то же, что и обычным скриптам на этой странице, плюс несколько переменных и функций, описанных вот здесь: https://wiki.greasespot.net/Greasemonkey_Manual:API.

подскажите строчку кода, которая бы при заходе на эту страницу нажимала на кнопку "войти в почту"

скрытый текст
http://s11.radikal.ru/i183/1606/3c/4c00872d2239.jpg

Выделить код

Код:

content.document.forms[0].submit();

turbot

сделал так

Выделить код

Код:

// ==UserScript==
// @name           rambler
// @description    Автологин
// @include        https://mail.rambler.ru/
// @include        https://mail.rambler.ru/?login=&domain=@rambler.ru&password=
// ==/UserScript==

content.document.forms[0].submit();


чёт не жмется...

Inko7

Выделить код

Код:

// @run-at document-idle

в метаданные.

здесь у каждой новости справа внизу есть кнопочка "Открыть источник во фрефме" :)
Как открыть источник в background tab?

Или по другому:
при открытии новости, например, автоматически "кликнуть" ссылку "Читать на сайте" внизу (class = content-source clearfix). Желательно открыть ссылку в этой же вкладке.

Нужен небольшой скриптик для ютуба который дописывает к ссылкам вида https://www.youtube.com/channel/nazvaniekanala и https://www.youtube.com/user/nazvaniekanala приставку /videos чтобы получалось https://www.youtube.com/channel/nazvaniekanala/videos Гуглил много но рабочий вариант так и не нашел

vet41, среди всего остального на что способен YouTube + есть и "Страница канала по умолчанию Видео(или выбор из 6 пунктов)".

vitalii201 пишет:

vet41, среди всего остального на что способен YouTube + есть и "Страница канала по умолчанию Видео(или выбор из 6 пунктов)".

громоздкий он уж очень да и ютуб я в браузере не смотрю вообще

turbot
добавил строку в метаданные, но не помогло...

скрытый текст
// ==UserScript==
// @name           Rambler Mail - AutoLogin
// @description    Автологин на стартовой странице
// @include        https://mail.rambler.ru/
// @include        https://mail.rambler.ru/?login=*
// @run-at document-idle
// ==/UserScript==

content.document.forms[0].submit();

в таком варианте постоянно обновляется (перегружается) страница
что еще можно сделать?

Inko7
Чем мог. https://lh6.ggpht.com/-kQK6de7dO_U/VEq-JP1r28I/AAAAAAAAaDk/mCkhGXpD548/s0/idontnow.gif
Куда перенаправляет после логина если логиниться вручную? С какой страницы?
У меня нет аккаунта, чтоб проверить, а без мобильного там не зарегаться.
Ну и, может данные подставиться в форму не упесвеают, может так:

Выделить код

Код:

// ==UserScript==
// @name           rambler
// @description    Автологин
// @include        https://mail.rambler.ru/
// @include        https://mail.rambler.ru/?login=*&domain=%40rambler.ru&password=*
// @grant none
// ==/UserScript==
window.addEventListener('load', function func() {
    window.removeEventListener('load', func);
    setTimeout(()=>{
        content.document.forms[0].submit();
    },300)
});

turbot
все то же...
ладно, спасибо, буду сам разбираться...
один вопрос: как узнать, что нужно вот так?

Выделить код

Код:

content.document.forms[0].submit();

через DOM Inspector ?

Inko7
Угу. Можно и в дефолтных инструментах смотреть.

спасите  помогите   :) две проблемы, психую третий день, может  программизм не моё...

FF 47
Не выводится инфа в консоль встроенного  в FF инспектора
А при включенном дополнении Firebug выводит: API ведения логов веб-консоли (console.log, console.info, console.warn, console.error) был отключен скриптом на этой странице.
В  FireBug нормально выводит.

_________________________________________

04-08-2016 12:26:05
Вопрос два.

FF 47
из установленного:
FireBug
FireFinder
Greasemonkey (здесь скрипт автоматизации и пишу)

Страница:
https://mybank.oplata.kykyryza.ru/

кликаю инспектировать элемент на поле ввода, затем правым кликом -> копировать xpath
xpath ввода штрих-кода: /html/body/div/div/div[1]/div/div[2]/form/div[3]/input
тут же ввожу его в Firefinder и .. пустота.

И консоль  выдаёт что такого элемента нема:

Выделить код

Код:

var xpath3='/html/body/div/div/div[1]/div/div[2]/form/div[3]/input';
    var path_shtrih_Code = document.evaluate (xpath3, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
    console.log("ШТРИХ:"+path_shtrih_Code.singleNodeValue);

что за хрень ?
(На других страницах нормально работает,на этой например, находит выданный xpath элементов)

selevo
У меня вроде работает.

Выделить код

Код:

var xpath3="//input[contains(@class, 'authentication-form')]";

turbot пишет:

selevo
У меня вроде работает.

Выделить код

Код:

var xpath3="//input[contains(@class, 'authentication-form')]";

:)
каким образом получился такой xpath, ручным писанием, анализом ?

А вообще  подскажите как  быстро "адрес" элементов находить чтоб жамкнуть по ним, заполнить, скопировать.
Может я по трудному пути пошёл...
Просто xpath,  firebug  по клику кнопки показывает и я слегка знаю как  этим управлять.

selevo пишет:

ручным писанием

:rolleyes:

ну вот,а это долго
вот смотри как я делаю ,5 секунд
https://youtu.be/3Q_9bVS0UqU

минус  в том что эти две  строки обработки надо писать

Выделить код

Код:

var PutKuzlu='/html/body/div/div/div[1]/div/div[2]/form/div[3]/input';
    var uzel = document.evaluate (PutKuzlu, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
  

а затем уже  например клик:

Выделить код

Код:

uzel.singleNodeValue.click();

почему    текстовый  редактор в грисмонкей отличается от того который  в браузере ?
в гисмонкее нет кнопок  запустить исследовать отобразить
и вообще нет меню "выполнить"
при этом я не помню как  я  свой первый скрипт запустить умудрился без этого меню.
https://pp.vk.me/c636426/v636426960/1ab51/E7S7v3URNck.jpg

Greasemonkey + atom или notepad++
как в этих редакторах скрипт запустить в мозиле конечно?

Уважаемые, не могли бы вы написать скрипт, который бы убирал пустое место от рекламы на сайте www.inoreader.com ? Попробовала три штуки отсюда, но они уже давно сделаны, а рекламный блок только в августе появился.

Electrika
Если Вы про тот блок, что справа от списка, то для себя сделал так. В блокировщике рекламы скрыл блок
inoreader.com###sinner_container
и сделал стиль (для Stylish)

Выделить код

Код:

@-moz-document domain("inoreader.com") {
    .reader_pane_sinner {
    right: -200px !important;
  }
}

Может, решение и корявое, но эффективное - у меня работает. ;)

xrun1 Спасибо! Исчез треклятый блок.
А кстати, последние пару дней стал подглючивать [inoreader] интерфейс - это только у меня? Прошу прощения за оффтоп

bezuma
:offtopic:

скрытый текст
Мне кажется это не интерфейс, а серверы у Innologica тормозят. Ходите по http - это быстрее. А если пользуетесь кнопкой/дополнением Inoreader Companion, то снимите галочку в настройках.

xrun1, ура, ваш скрипт помог, спасибо!

bezuma, у меня inoreader грузится без проблем.

:offtopic:Раз уж я здесь начал оффтоп по Inoreader, здесь сам и закончу.
Стиль, который предложил 3-мя постами выше не совсем правильный - скрывается полоса прокрутки. Вот так будет правильно

Выделить код

Код:

@-moz-document domain("inoreader.com") {
.reader_pane_sinner {
   padding-right: 0 !important;
  }
}

Нужен скрипт автоматически разворачивающий спойлеры на livejournal.com. Не в комментариях. (!)

leshiy_odessa

Выделить код

Код:

// ==UserScript==
// @name        LJ spoilers
// @namespace   spoilers
// @include     http://*.livejournal.com/*
// @version     1
// @run-at      document-end
// @grant       none
// ==/UserScript==

var spoilers = document.getElementsByClassName('ljcut-link-expand');
for (var i = 0; i < spoilers.length; i++) spoilers[i].click();

yup


Спасибо за ответ. Но скрипт не работает. Он открывает последний по счету пост.

Мне нужно открытие всех спойлеров на главной странице пользователя. Например тут —

Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

leshiy_odessa

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name        LJ spoilers
// @namespace   spoilers
// @include     http://*.livejournal.com/*
// @version     1
// @run-at      document-end
// @grant       none
// ==/UserScript==

  for(var i=0;i<content.document.getElementsByClassName('ljcut-link-expand').length;i++) {
             content.document.getElementsByClassName('ljcut-link-expand')[i].click()
                }

mokujin

Всё тоже самое, открывается последний пост на странице.

Если это положить в кнопку все открывает как нада. В Код. Из скрипта и у мя, тоже чёт не хочет.

mokujin
leshiy_odessa
А так?
// @run-at      document-idle

ifln

Ура!!! Огромное спасибо, работает отлично.

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name        LJ spoilers
// @namespace   spoilers
// @include     http://*.livejournal.com/*
// @version     1
// @run-at      document-idle
// @grant       none
// ==/UserScript==

  for(var i=0;i<content.document.getElementsByClassName('ljcut-link-expand').length;i++) {
             content.document.getElementsByClassName('ljcut-link-expand')[i].click()
                }


update Проверил код от yup и он тоже работает. Теперь мой мозг перфекциониста, но не программиста должен выбрать какой оставить :)

leshiy_odessa
Мне тут подсказали, использовать нужно так как сделано у yup

1) Последнее время «подкладывают» гиперссылки внутри которых не тот адрес что виден. Есть ли какой скрипт исправляющий это, или может кто напишет?
Пример: https://forum.mozilla-russia.org/viewtopic.php?id=5499&p=26
2) Если у кого-то есть желание, посмотрите скрипт http://steelywing.iblogger.org/google-translate-tooltip
Хотелось бы видеть форматирование текста как в этом скрипте http://ruzanow.ru/userjs/google-translate.js

слева google-translate-tooltip
http://i.imgur.com/JwciPXS.png

3) Почему для некоторых сайтов не отображаются favicon? http://jsfiddle.net/hellowahab/bTQaa/
А иногда бывает то есть, то нет.
+
Кусок другого скрипта который выводит иконку сайта:

Выделить код

Код:

$(document).ready(function () {
    var imgs = "https://plus.google.com/_/favicon?domain=";
//бла бла бла
var link3 = '<a target="_blank" title="chdbits" href="http://chdbits.co/torrents.php?search=' + movie_enc + ' ' + year + '"><img src="' + imgs + 'chdbits.co"></a>';

Пробую менять на получение уже с полного адреса, а не через доменное имя
https://plus.google.com/_/favicon?domain=
>
https://plus.google.com/_/favicon?domain_url=
Результат нулевой.
Так же пробовал с http://www.google.com/s2/favicons?domain= ничего не вышло.

Есть мысль что надо копать в сторону уровней доменов и через  регулярку выводить, но как это организовать? При этом, хотелось бы сохранить оригинальную задумку автора вписывая только домен верхнего уровня(?).

Xant1k пишет:

1) Последнее время «подкладывают» гиперссылки внутри которых не тот адрес что виден. Есть ли какой скрипт исправляющий это, или может кто напишет?

Скрипты такие есть, да и свой написать не сложно. Но я предпочитаю на портить необратимо страничку, а использовать дополнение Redirect Bypasser.
И есть одна не решаемая никакими средствами проблема: воевать можно только со ссылками, подменяемыми средствами HTML. Подмену, выполняемую через JavaScript, зачастую, не только исправить, но даже и обнаружить невозможно.

Попробовал сделать "автооткрывалку" спойлеров для Reddit-a

Выделить код

Код:

// ==UserScript==
// @name        Reddit spoilers
// @namespace   spoilers  
// @include     http*://*reddit.com/*
// @version     1
// @run-at      document-idle
// @grant       none
// ==/UserScript==

  for(var i=0;i<content.document.getElementsByClassName('expando-button collapsed video').length;i++) {
             content.document.getElementsByClassName('expando-button collapsed video')[i].click()


Но открываются не все спойлеры.

Как исправить?
К примеру или рандомный тред

vitalii201

Выделить код

Код:

var spoilers = document.getElementsByClassName('expando-button');
for (var i = 0; i < spoilers.length; i++) spoilers[i].click();

20-02-2017 18:06:12
тока где там спойлеры, на реддит, я так и не нашел.

vitalii201 пишет:

Как исправить?

Помогает перебор в обратном порядке:

Выделить код

Код:

var e = document.getElementsByClassName('expando-button collapsed video');
for(var i=e.length-1; i>=0; i--) e[i].click();

mokujin, спасибо!
P.S.
yup и ваш код работает, спасибо!

скрытый текст
А мой после перезапуска – нет. )

И какой теперь оставить? )

vitalii201 пишет:

И какой теперь оставить? )

ну тыж видишь, что разница в том что ищется. Несколько элементов с конца , как показал yup  или один.
Если не глючит(не жмакает куда не надо) то оставляй более обширный вариант (с одним классом expando-button ).
Если глючит(жмакает туда куда не должно), то делай более узкий выбор элемента с несколькими классами "expando-button collapsed video" с обратным порядком.

vitalii201 пишет:

А мой после перезапуска – нет. )

Если он в скрипте в точности такой же, как в исходном сообщении, то не удивительно - там у for открывающая фигурная скобка лишняя.

Есть такая проблема. Магазин прячет весь список товаров и для продолжения списка нужно нажимать — "Еще 12 товаров". Пример —  http://www.tavriav.ua/305/c305/

Возможно ли сразу открыть весь список?

leshiy_odessa
То что пришло в голову, но пашет. Пока будешь крутить - будет жмакацца кнопка

Выделить код

Код:

// ==UserScript==
// @name                     more-goods
// @namespace            default
// @version                  2.0
// @grant                     none
// @include               http://www.tavriav.ua/*
// @run-at                document-start
// ==/UserScript==

document.addEventListener("DOMMouseScroll", function(e) {

    var elem = document.getElementsByClassName("btn-link-i sprite-bf");
        elem[0].click();

    });

leshiy_odessa

Выделить код

Код:

function PressButton() {
  if ((document.getElementsByClassName("btn-link-i sprite-bf").length > 0) && (document.getElementsByClassName("btn-link-i sprite-bf hidden").length == 0)) {
    document.getElementsByClassName("btn-link-i sprite-bf")[0].click();
    setTimeout(PressButton, 1000);
  }
}
setTimeout(PressButton, 1);

mokujin

Хитро.  Сначала думал, что не работает ибо по привычке я скролю не колесиком, а полосой прокрутки. А её можно добавить?

Еще мне кажется что можно тогда сразу зациклить на N количество раз. N можно вычислять из количества страниц — <a href="/305/c305/page=17/" class="b-paginator-l-i-link txt-black">17</a>.
Или второй вариант, когда сама кнопка исчезает при появлении последней страницы.

27-02-2017 23:51:28
yup

Шо то не идет. :/ Ничего не происходит.

update2 Ага догадался сделать // @run-at                document-idle

update3 PressButton, 1000 — это как то жестоко.

замени "DOMMouseScroll"   на просто "scroll" , будет жмакать при любом шевелинии страницы(думаю это не очень хорошо, но не уверен). Но онож подгружается снизу, полоска дергается... так шо лучше мышом, если ноут - двумя пальцами по тачпаду(найти прогу для своего ноута).
ну или клавишами ↑ ↓ :rolleyes:

mokujin

Со "scroll" просто волшебно. Скорость открытия впечатляет. Теперь бы скрестить вашу скорость с вариантом от yup. У yup оно делает то что нужно, открывает страницу, но видна задержка в ~500мс. А у mokujin хватаешь за ползунок и вжикаеш вниз и страница наполняется ну очень быстро.

update Черт, я понял что у yup 1000 это задержка, а не количество нажатий.

ну просто у мя за количество кликов отвечает сам бравзер, пока крутишь страницу, пока и будет искать и жмакать. Яж грил, это самое простое что можно.
yum тебе сделал собственный счетчик, кот. зависит от количества этих кнопок(показать еще) на данной странице. Кликает их столько раз, сколько найдет, через интервал.  "Скорость" тут непричем  ;-) ее вообще нет. Разные способы прост.
да, 1000 это задержка = ~1сек.

Привет всем!
Господа, администрация одного хорошего сайта (закрытый трекер на базе TorrentPier II старой версии) удалила поддержку youtube в сообщениях на форуме.
К сожалению, не обладаю знаниями JavaScript и вся надежда только на Вас. Был бы признателен любой помощи. Помогите пожалуйста выполнить следующую задачу.
Необходимо заменять ссылки вида https://youtu.be/Bkq1PAyGuZY на HTML код плеера(фрейма). Ссылки движок трекера оборачивает в следующий код:

Выделить код

Код:

<div class="post_wrap">содержимое сообщения<br /><a href="https://youtu.be/Bkq1PAyGuZY" class="postLink">https://youtu.be/Bkq1PAyGuZY</a></div>

HTML код "плеера" (взял с YouTube)

Выделить код

Код:

<iframe src="https://www.youtube.com/embed/Bkq1PAyGuZY?ecver=2" width="640" height="360" frameborder="0" allowfullscreen></iframe>

В сети есть множество примеров, но без знаний JS применить их не получилось. Выручайте :whiteflag:

Sality
Как-то так:

Выделить код

Код:

var player, i, link, links = document.getElementsByClassName("postLink");
for (i = links.length-1; i >= 0; i--) {
  link = links[i];
  if ((link.nodename == "A") || (link.hostname == "youtu.be") || (link.hostname == "youtube.com") || (link.hostname == "www.youtube.com")) {
    player = document.createElement("iframe");
    player.src = "https://www.youtube.com/embed" + link.pathname + "?ecver=2";
    player.width = 640;
    player.height = 360;
    player.frameBorder = 0;
    player.allowFullscreen = true;
    link.parentElement.replaceChild(player, link);
  }
}

yup пишет:

Sality
Как-то так:

Выделить код

Код:

var player, i, link, links = document.getElementsByClassName("postLink");
for (i = links.length-1; i >= 0; i--) {
  link = links[i];
  if ((link.nodename == "A") || (link.hostname == "youtu.be") || (link.hostname == "youtube.com") || (link.hostname == "www.youtube.com")) {
    player = document.createElement("iframe");
    player.src = "https://www.youtube.com/embed" + link.pathname + "?ecver=2";
    player.width = 640;
    player.height = 360;
    player.frameBorder = 0;
    player.allowFullscreen = true;
    link.parentElement.replaceChild(player, link);
  }
}

Большое Вам человеческое спасибо! Очень выручили :)

Выделить код

Код:

 || (link.hostname == "youtube.com") || (link.hostname == "www.youtube.com")

Этот часть кода вырезал, чтобы затрагивался только youtu.be. Ссылки вида *.youtube.com обрабатываются некорректно, но они и не нужны.
Написал это для тех, кто будет использовать этот код.

Еще раз благодарствую, настроение подняли :)

Еще раз попрошу. Нужно разворачивать всё комментарии на dirty (показать комментарии от ....).

https://imgur.com/8scuWA9.png


P.S. Заранее огромное спасибо.

И совсем главная хотелка. :)

rutracker блокирует фреймы и получается что невозможно пользоваться RSS ридером — NewsFox.
Как бы заблокировать эту проверку?

http://i.imgur.com/N5EmLIi.png

leshiy_odessa пишет:

Нужно разворачивать всё комментарии на dirty (показать комментарии от ....).

Например, так:

Выделить код

Код:

// ==UserScript==
// @name        d3
// @namespace   comments
// @include     https://gif.d3.ru/*
// @include     http://gif.d3.ru/*
// @version     1
// @run-at      document-idle
// @grant       none
// ==/UserScript==
function ClickComment() {
  var i, links = document.getElementsByClassName('b-comment__expand-button');
  for (i = links.length-1; i >= 0; i--) links[i].click();
  setTimeout(ClickComment, 1000);
}
setTimeout(ClickComment, 1);

27-03-2017 04:27:38

leshiy_odessa пишет:

Как бы заблокировать эту проверку?

Проверка там такая:

Выделить код

Код:

if ( top != self && !self.location.hostname.match(BB.allowed_translator_hosts) ) {
  $(function() {
    $('body').html('<center><h1><br><br>Похоже вас пытаются обмануть<br>frame\'s hostname: ' + self.location.hostname + '</h1></center>');
    throw new Error('in frame');
  });
}

BB.allowed_translator_hosts - это регулярное выражение /^(translate\.googleusercontent\.com)$/
Если туда засунуть что-то другое, то проверку можно обломать.
Но вот вопрос: а когда скрипт Greasemonkey запускать? Делать это до скриптов страницы смысла нет, так как то значение переменной страничный скрипт присваивает, и он просто затрёт наше значение. А после скриптов страницы уже поздно - показ во фрейме к этому времени будет обнаружен и заблокирован.
Разве что переменной self присвоить top... Но неизвестно, что при этом поломается. Пробовать надо.

Выделить код

Код:

// ==UserScript==
// @name        rutrackerRSS
// @namespace   rutrackerRSS
// @include     https://rutracker.org/*
// @include     http://rutracker.org/*
// @version     1
// @run-at      document-start
// @grant       none
// ==/UserScript==
window.self = window.top;

yup
Ааааа.... Дай я тебя расцелую :) НУ всё прямо в точку. rutrackerRSS заработал сразу. Это же #$&$% сколько я с ним мучался и пытался решить проблему самостоятельно.

Только d3 я поправил домены на — *.d3.ru/* Никак не могу понять зачем там setTimeout = 1000мс. Для перестраховки?

P.S. Спасибо всем за помощь. В ответ могу только отблагодарить своими знаниями в железе (любой глюк железа). Любой вопрос по выбору или настройке роутера пишите в личку.

leshiy_odessa пишет:

Только d3 я поправил домены на — *.d3.ru/* Никак не могу понять зачем там setTimeout = 1000мс. Для перестраховки?

Да. Эксперимент показал, что ссылки на ответы там не присутствуют на страничке изначально, а добавляются - скриптами странички - уже после того, как она получена, из-за чего даже @run-at document-idle не помогает. Нужно ждать, пока ссылки добавятся, и только потом их раскрывать.
Можно, конечно, просто выждать какое-то предопределённое время, например, две или три секунды (одной иногда было мало, проверял), и разово запустить процесс разворачивания ответов, но нет гарантии, что к этому времени добавление закончится (мало ли из-за чего оно застопорится...). Приходится тупо делать это раз в секунду всё время, пока страничка открыта - это и ждать начала процесса разворачивания ответов не очень долго, и в то же время браузер не очень грузит.
(Со ссылками в поисковой выдачей Google та же история, и до сих пор лучшего решения не нашлось.)

yup
Я тут конечно погарячкувал, решил сделать самостоятельно по аналогии разворачивания спойлеров в комментах youtube и обнаружил, что на d3.ru class называется не "b-comment__expand-button", а "b-comment__expand-button-container". Исправил в скрипте и он продолжает работать. Отсюда вопрос. Это джава скрипту пофигу, он ищет по началу имени или это у вас какой то другой хитрый способ, что вы нашли этот класс?

update Таки у меня получилось сделать по аналогии для youtube. Теперь красота.

Выделить код

Код:

// ==UserScript==
// @name        Youtube comments open spoiler
// @namespace   comments
// @include     https://youtube.com/*
// @include     http://youtube.com/*
// @include     https://www.youtube.com/*
// @include     http://www.youtube.com/*
// @version     1
// @run-at      document-idle
// @grant       none
// ==/UserScript==
function ClickComment() {
  var i, links = document.getElementsByClassName('yt-uix-button yt-uix-button-size-default yt-uix-button-link');
  for (i = links.length-1; i >= 0; i--) links[i].click();
  setTimeout(ClickComment, 1000);
}
setTimeout(ClickComment, 1);
Выделить код

Код:

/* --- Скрыть ответы --- */  
.yt-uix-expander-head.comment-replies-renderer-expander-up.comment-replies-renderer-hide,
/* --- Свернуть --- */
.yt-uix-button.yt-uix-button-size-default.yt-uix-button-link
{display:none !important}

update2 Пошли какие то подтормаживания. Походу я словил какой непрерывный цикл.

leshiy_odessa пишет:

обнаружил, что на d3.ru class называется не "b-comment__expand-button", а "b-comment__expand-button-container".

Нет. Класс ссылки - именно "b-comment__expand-button". А "b-comment__expand-button-container" - класс того <div>, в который эта ссылка вложена.

leshiy_odessa пишет:

Исправил в скрипте и он продолжает работать.

Что этот <div> на click() реагирует - ну, значит, создатели странички на него обработчик этого события навесили. Можно считать это случайностью и рассчитывать на подобное в других местах не стоит.

leshiy_odessa пишет:

Это джава скрипту пофигу, он ищет по началу имени или это у вас какой то другой хитрый способ, что вы нашли этот класс?

Функция getElementsByClassName() ищет по точному имени (точнее - по полному набору заданных имён).
А я класс ссылки нашёл элементарно - посмотрел с помощью Firebug в дереве DOM.

leshiy_odessa пишет:

Пошли какие то подтормаживания. Походу я словил какой непрерывный цикл.

1. YouTube и так неторопливый сайт. И если подгружать сразу кучу новых сообщений, да ещё одновременно с просмотром видео, то тормозов надо ожидать изначально.
2. Почему такой странный набор классов? У кнопки на подгрузку сообщений классы: "yt-uix-button yt-uix-button-size-default yt-uix-button-default load-more-button yt-uix-load-more comment-replies-renderer-paginator comment-replies-renderer-expander-down yt-uix-button-link", и на тестовой страничке, где я это посмотрел, таких объектов находится в 10 раз меньше, чем по тому урезанному набору, который использован в коде скрипта.
3. Бесконечный цикл реализован в самом скрипте - один проход в секунду. Но в отличие от кнопок подгрузки сообщений, которые исчезают после клацания, те объекты, которые получает нынешний код, никуда не деваются, и их много, так что время на них тратится на каждом проходе. Хотя я не думаю, что эта задержка будет как-то заметна.

yup пишет:

1. YouTube и так неторопливый сайт. И если подгружать сразу кучу новых сообщений, да ещё одновременно с просмотром видео, то тормозов надо ожидать изначально.

Я двигаю за ползунок и как бы спотыкаюсь/зависаю. То есть что то оно там делает уже после того как все комментарии развернуты.

update Подвисоны пропали, когда сделал двойной код: разворачивание комментариев + подгрузка других страниц — "Показать ещё". А когда вернул разворачивания спойлеров, то микро зависонны вернулись. Загадка.

yup пишет:

2. Почему такой странный набор классов? У кнопки на подгрузку сообщений классы: "yt-uix-button yt-uix-button-size-default yt-uix-button-default load-more-button yt-uix-load-more comment-replies-renderer-paginator comment-replies-renderer-expander-down yt-uix-button-link", и на тестовой страничке, где я это посмотрел, таких объектов находится в 10 раз меньше, чем по тому урезанному набору, который использован в коде скрипта.

Если быть точнее то у меня класс такой — yt-uix-button yt-uix-button-size-default yt-uix-button-default load-more-button yt-uix-load-more comment-section-renderer-paginator yt-uix-sessionlink.
Но не суть, потому что речь идет не про подгрузку комментариев, а про разворачивании спойлеров. Но идею воспринял, возможно оставлю. Но тогда браузер точно рухнет от количества комментариев на некоторых видео.

Проблема вырисовывается. НА ютубе два вида спойлеров :

1. "Читать дальше" — yt-uix-button yt-uix-button-size-default yt-uix-button-link
2. "Показать ответы" — yt-uix-button yt-uix-button-size-default yt-uix-button-default load-more-button yt-uix-load-more comment-replies-renderer-paginator comment-replies-renderer-expander-down yt-uix-button-link

Если поставить первый, то всё спойлеры открываются, но идут подзависоны.
Если поставить одновременно, то первый спойлер ("Читать дальше") не срабатывает, второй работает и исчезают подзависоны.
Если их поменять местами, первым в скрипте поставить "Показать ответы", то всё срабатывает, но зависоны еще жестче.

leshiy_odessa пишет:

Но не суть, потому что речь идет не про подгрузку комментариев, а про разворачивании спойлеров.

Как-то так получилось, что на тех страничках, на которые я заглядывал в процессе нашего обсуждения, таких штуковин просто не было. Сейчас вот только впервые наткнулся.

Кнопки с набором классов "yt-uix-button yt-uix-button-size-default yt-uix-button-link" после нажатия не исчезают. И классы их не меняются. Просто на самом деле у каждого комментария есть две такие кнопки: "Читать дальше" и "Спрятать". И либо они обе невидимые (если комментарий короткий), либо видна только одна из них. При нажатии на видимую кнопку она становится невидимой, а другая - видимой.
А скрипт, в его нынешнем состоянии, тупо жмёт на все подряд раз в секунду.

Вот такой вариант предлагаю попробовать:

Выделить код

Код:

// ==UserScript==
// @name        Youtube comments open spoiler
// @namespace   comments
// @include     https://youtube.com/*
// @include     http://youtube.com/*
// @include     https://www.youtube.com/*
// @include     http://www.youtube.com/*
// @version     2
// @run-at      document-idle
// @grant       none
// ==/UserScript==
function ExpandComments() {
  var i, links = document.getElementsByClassName("comment-text-toggle-link read-more");
  for (i = links.length-1; i >= 0; i--) if (links[i].className != "comment-text-toggle-link read-more hid") links[i].click();
  setTimeout(ExpandComments, 1000);
}
setTimeout(ExpandComments, 1);

leshiy_odessa пишет:

Я двигаю за ползунок и как бы спотыкаюсь/зависаю. То есть что то оно там делает уже после того как все комментарии развернуты.

Я выхожу в Интернет с ноутбука с довольно маленьким экраном. На страничках YouTube в него помещается только окошко видеоролика и его название. Даже чтобы описание посмотреть - нужно ползунок вниз тянуть.
Но описание после прокрутки видно сразу, а комментарии, которые под ним расположены, - нет. Вместо них только надпись "Подождите". Комментарии на её месте появляются секунды через 3-4.
А когда вниз комментарии протягиваю, то по индикатору на вкладке видно, что браузер периодически ещё что-то из Интернета подтягивает.
И всё это - естественное поведение YouTube, без вмешательства каких-либо сторонних скриптов.

yup пишет:

Вот такой вариант предлагаю попробовать:

Вы забыли что два вида спойлера ( "Читать дальше" и "Показать ответы"). Два часа пытался их объединить. Один раз даже получилось, но появлялся глюк с вечным нажатием по не заданному классу. Прошу помощи.

update Прошла минута от ответа и у меня вышло. Чувствую себя индийским программистов копи пастой.


скрытый текст

Выделить код

Код:

/*
https://forum.mozilla-russia.org/viewtopic.php?pid=733851#p733851
*/
// ==UserScript==
// @name        Youtube comments open spoiler
// @namespace   comments
// @include     https://youtube.com/*
// @include     http://youtube.com/*
// @include     https://www.youtube.com/*
// @include     http://www.youtube.com/*
// @version     1
// @run-at      document-end
// @grant       none
// ==/UserScript==


/* ----- "Читать дальше"  ----- */
function ExpandComments() {
  var i, links = document.getElementsByClassName("comment-text-toggle-link read-more");
  for (i = links.length-1; i >= 0; i--) if (links[i].className != "comment-text-toggle-link read-more hid") links[i].click();


/* ----- "Показать ответы"  ----- */
  var i, links = document.getElementsByClassName("comment-replies-renderer-paginator");
  for (i = links.length-1; i >= 0; i--) if (links[i].className != "yt-uix-expander-head") links[i].click();
  setTimeout(ExpandComments, 1000);
}
setTimeout(ExpandComments, 1);

/* ПОДГРУЗКА ОСТАЛЬНЫХ КОММЕНТАРИЕВ — "Показать ещё". Если много комментариев, то выжирает всю память.
function ClickComment() {
  var i, links = document.getElementsByClassName('yt-uix-button yt-uix-button-size-default yt-uix-button-default load-more-button yt-uix-load-more comment-section-renderer-paginator yt-uix-sessionlink');
  for (i = links.length-1; i >= 0; i--) links[i].click();
  setTimeout(ClickComment, 1000);
}
setTimeout(ClickComment, 1);*/


Интересно а Java скриптом можно сделать такое? Скрыть классы.

.comment-replies-renderer-hide,
.comment-text-toggle-link.show-less
{display:none !important}


yup пишет:

А скрипт, в его нынешнем состоянии, тупо жмёт на все подряд раз в секунду.

Я это понял и пытался ночью переделать предыдущий ваш срипт.

update2 и тут до меня как до жирафа дошло, что нужно было переименовать вторую function  xpandComments() на function ExpandComments2(). Ну я и тупой. :(

leshiy_odessa пишет:

Вы забыли что два вида спойлера ( "Читать дальше" и "Показать ответы").

Нет, не забыл. Просто это достаточно независимые операции, а объединённого кода я не видел, поэтому не стал заниматься самодеятельностью и предложил только код по той проблеме, которая непосредственно обсуждалась.

leshiy_odessa пишет:

Интересно а Java скриптом можно сделать такое? Скрыть классы.

.comment-replies-renderer-hide,
.comment-text-toggle-link.show-less
{display:none !important}

Из JavaScript можно создавать новые стили, но доступ к существующим стилям есть только на чтение. Поэтому вариантов имеется два:
1. Создать в стилях новый класс с параметром "display:none" и назначить его всем скрываемым элементам.
2. Получить список всех элементов нужного класса и присвоить им  "display:none":

Выделить код

Код:

var i, elems = document.getElementsByClassName("comment-replies-renderer-hide");
for (i = elems.length-1; i >= 0; i--) elems[i].style.display = false;

Но через userContent.css оно как-то красивее и эффективнее.

yup пишет:

2. Получить список всех элементов нужного класса и присвоить им  "display:none":

Я думал вы ошиблись с display = false, помозговал пол часа и вспомнил, что видел hide или none, потом потратил еще минут десять на кавычки. В итоге таки родил — for (i = elems.length-1; i >= 0; i--) elems[i].style.display = "none";
Начинаю писать вам ответ, нажимаю цитировать и вижу — none :)

Огромное вам спасибо за помощь и науку.

скрытый текст

Выделить код

Код:

/*
https://forum.mozilla-russia.org/viewtopic.php?pid=733851#p733851
*/
// ==UserScript==
// @name        Youtube comments open spoiler
// @namespace   comments
// @include     https://youtube.com/*
// @include     http://youtube.com/*
// @include     https://www.youtube.com/*
// @include     http://www.youtube.com/*
// @version     1
// @run-at      document-end
// @grant       none
// ==/UserScript==


/* ----- "Читать дальше"  ----- */
function ExpandComments() {
  var i, links = document.getElementsByClassName("comment-text-toggle-link read-more");
  for (i = links.length-1; i >= 0; i--) if (links[i].className != "comment-text-toggle-link read-more hid") links[i].click();

/* ----- "Показать ответы"  ----- */
  var i, links = document.getElementsByClassName("comment-replies-renderer-paginator");
  for (i = links.length-1; i >= 0; i--) if (links[i].className != "yt-uix-expander-head") links[i].click();
  setTimeout(ExpandComments, 1000);
}
setTimeout(ExpandComments, 1);

function HideClass() {
/* --- УБРАЛ КНОПКУ "Скрыть ответы" --- */
var i, elems = document.getElementsByClassName("comment-replies-renderer-hide");
for (i = elems.length-1; i >= 0; i--) elems[i].style.display = "none";
/* --- УБРАЛ КНОПКУ "Свернуть" --- */
var i, elems = document.getElementsByClassName("comment-text-toggle-link show-less");
for (i = elems.length-1; i >= 0; i--) elems[i].style.display = "none";
setTimeout(HideClass, 1000);
}
setTimeout(HideClass, 1);

/* ПОДГРУЗКА ОСТАЛЬНЫХ КОММЕНТАРИЕВ — "Показать ещё". Если много комментариев, то выжирает всю память.
function ClickComment() {
  var i, links = document.getElementsByClassName('yt-uix-button yt-uix-button-size-default yt-uix-button-default load-more-button yt-uix-load-more comment-section-renderer-paginator yt-uix-sessionlink');
  for (i = links.length-1; i >= 0; i--) links[i].click();
  setTimeout(ClickComment, 1000);
}
setTimeout(ClickComment, 1);*/