Страницы: 1
Kramar, простите, я продублировал это сообщение на тамошнем форуме :).
Почему это вдруг "простите", наоборот спасибо Вам за это, только там про привилегии слегка по-другому сказано.
Еще раз большое спасибо ответившим. Пост на natahaus.info -
При первом применении появляется диалог, в котором спрашивается, можно ли дать сценарию дополнительные привилегии. Если выставить флаг «запомнить решение», то больше этот диалог не повляется.
У меня этого диалога не было и отключение NoScript никак на это не повлияло. Диалог появился только после изменения в about:config параметра signed.applets.codebase_principal_support на true. После этого спрашивает о привилегиях. Изменение signed.applets.codebase_principal_support на true ничем страшным не чревато?
После всех проведенных операций скрипт работает именно так, как его просили.
Огромное спасибо luitzen и formatC'vt за помощь и терпение.
Можно ли опубликовать полученное решение на форуме natahaus.info с упоминанием и благодарностью luitzen и formatC'vt ?
Как-нибудь так тогда:
Выделить кодКод:
javascript: td = document.getElementsByClassName('newsbody')[0].textContent;netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper).copyString(td.match(/^Автор:\xA0([^\n]*)$/m)[1] + ' - ' + td.match(/^Название:\xA0([^\n]*)$/m)[1]);Хотелось бы, конечно, ограничиться меньшими привилегиями и выкрутиться через .execCommand("Copy", false, null).
Но как я ни мучился со всякими capability.policy.allowclipboard, результата не достиг :(.
Консоль ошибок пишет Ошибка: A script from «http://www.infanata.org» was denied UniversalXPConnect privileges.
Стоит правда NoScript, но на infanata он неактивен.
Попробуйте через ClipboardHelper
Спасибо, интуитивно чувствую - "оно", но опять же таки дело в том, что в JavaScript я даже не чайник, а подставка от него.
Я так понимаю, что в примере выше alert(); я должен заменить на gClipboardHelper.copyString(); с соответствующим содержимым? Но чтобы оно заработало надо куда-то воткнуть const gClipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"]. getService(Components.interfaces.nsIClipboardHelper);
Вопрос задачи - куда? Или совсем-совсем неправ?
Понимаю, что в глазах сообщества выгляжу как ... (заполнить на свое усмотрение), но прошу снизойти до объяснений.
javascript: td = document.getElementsByClassName('newsbody')[0].textContent; alert(td.match(/^Автор:\xA0([^\n]*)$/m)[1] + ' - ' + td.match(/^Название:\xA0([^\n]*)$/m)[1]);
О, спасибо, работает, т.е. поменяв порядок элементов и добавив год, получаем:
javascript: td = document.getElementsByClassName('newsbody')[0].textContent; alert(td.match(/^Название:\xA0([^\n]*)$/m)[1] + ' - ' + td.match(/^Автор:\xA0([^\n]*)$/m)[1] + ' (' + td.match(/^Год:\xA0([^\n]*)$/m)[1] + ')');
Для полного счастья осталось занести это в буфер а не выдать alert (если есть такая возможность)
Помогите плиз адаптировать javascript: URL (букмарклет) для FireFox или создать скрипт для Greasemonkey
В IE отлично работает вот такая штука
javascript:t=document.body.outerHTML;autor_reg=/Автор:<\/B>[^>]*>([^<]*)/;autor=autor_reg.exec(t)[1];name_reg=/Название:[/s]*<\/[bB]>[^>]*>([^<]*)/;name=name_reg.exec(t)[1];year_reg=/Год:[/s]*<\/[bB]>[^\d]*(\d*)/;year=year_reg.exec(t)[1];s=name+' '+autor+' ('+year+')';clipboardData.setData('Text',s);
В FieFox естественно работать не хочет, познаний в JavaScript практически нет и беглое знакомство с тематикой показывает, что мне как не программеру уйму времени надо убить для минимального понимания, а возможности такой нет.
В Инете накопал, что FireFox не дружит с outerHTML, попробовал заменить на document.documentElement.innerHTML, текст странички выдает, но с кириллицей явные проблемы (в скрипте слова Автор, Название, Год).
javascript:t=document.documentElement.innerHTML;autor_reg=/Автор:<\/B>[^>]*>([^<]*)/;autor=autor_reg.exec(t)[1];name_re
…Lain_13
В Tabbrowser Preferences больше всего нравилось переключение вкладок наведением указателя мыши; почитав справку к TMP увидел, что там это тоже есть. Спасибо за подсказку, попробую.
В ветке уже один раз упоминалось, но рискну напомнить про Tabbrowser Preferences
Или это открытие множества ссылок из избранного?
Нет, режим работы примерно такой - FireFox практически не выгружается (ХР спящий режим), только открываются новые вкладки, т.е. постепенно количество вкладок зашкаливает где-то за 150-200.
Типа он не успевал открыть все, а уже пытался сохранять очередную сессию что ли?
Нет, не успевал за 10 секунд сохранить сессию, а уже получал команду сохранять по новой. Т.е. речь не об открытии вкладок, а о сохранении сессий.
Al_H
Так вроде проблему с сохранением сессий уже решил. А большое количество вкладок - с этим можно жить :)
Листая форум вроде нашел подходящий вариант решения проблемы.
На мысль натолкнул уважаемый Forest. Вот его слова: "А если поставить Минимальный интервал между 2 сохранениями не 10 сек, а побольше? А так понятно, что сохранение нескольких сотен вкладок требует времени..."
Наверное моему Фоксу при открытии большого количества вкладок (да, грешен) не хватало стандартного времени 10 секунд, поменяв его в настройках на 2 минуты я избавился от проблемы (очередной раз надеюсь, но похоже на правду), вот почему не мог поймать закономерность возникновения ошибки (зависит от количества открытых вкладок).
Если файлик sessionstore.js убить при неработающем ФФ, он появляется в момент запуска, но потом не всегда обновляется. Закономерность установить пока не удалось, иногда работает, иногда нет. Пока выхожу из ситуации корявенько - при необходимости закрыть ФФ захожу в установки домашней страницы - Использовать текущие страницы и при запуске показать Домашнюю страницу. Думаю, что проблему поможет разрешить все-таки часть кода, приведенная в первом посте, т.к. взаимосвязь с несохранением сессий и появлением в Консоли ошибок ссылки на "Строка: 1749" осталась.
Насколько я понимаю, это ведь и есть штатный режим сохранения сессий
По-моему не совсем так... Под сохранением сессий я понимаю периодическую перезапись файла sessionstore.js (до закрытия ФФ)
Откуда у вас там 1000?
По идее это всего лишь кол-во запомненных закрытых вкладок в журнале, с этим параметром экспериментировал - не помогло.
browser.sessionstore.resume_session
этот параметр указывает ФФ, нужно ли возобновлять сессию при аварийном закрытии проги - задается вопрос пользователю.
Если теперь ещё раз попробовать его прибить?
Во время работы ФФ убивать файл пробовал - вновь не появляется.
Все сказанное ИМХО. Спасибо за желание помочь.
MySh
Закономерность отловить не удалось. К самому ФФ в принципе претензий нет - не падает ни он, ни Винда (тьфу-тьфу).
Поставил в настройках При запуске ФФ - Показать окна и вкладки, открытые в прошлый раз. Теперь sessionstore.js сохраняется один раз при запуске ФФ и больше в процессе работы не обновляется.
Help! Проблема вернулась :( ни у кого мыслей по этому поводу не появилось?
Проблема решена переустановкой Firefox с нуля (а по случаю - и всей системы :) ). Скорее всего виновато было обновление версий Firefox (то ли криво скачалось, то ли также установилось), т.к. поставлена та же версия и те же расширения + несколько новых.
P.S. Может кому-нибудь поможет...
Вопрос: интуитивно где-то после версии FF 2.0.0.8 (точно не скажу) начались проблемы с сохранением сессий - файлик sessionstore.js в профиле не всегда обновляется в соответствии с выбранным в настройках интервалом времени. Используется "родное" восстановление сессий (без дополнений). Устанавливать для этого дополнения почему-то не хочется (как-то пробовал Tab Mix Plus). Периодичность возникновения ошибки непредсказуема - работает, работает, потом "забывает", что надо перезаписывать файлик sessionstore.js.
Консоль ошибок пишет:
Ошибка: [Exception... "Component is not available" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: file:///C:/Program%20Files/Mozilla%20Firefox/components/nsSessionStore.js :: sss_saveState :: line 1749" data: no]
Источник: file:///C:/Program%20Files/Mozilla%20Firefox/components/nsSessionStore.js
Строка: 1749
В этой строке (1749) содержится вот такая штука:
oState.session = { state: ((this._loadState == STATE_RUNNIN
Страницы: 1