Страницы: 1
сам принцип то понятен, пока не пойму, по какому принципу запомнить именно нужную вкладку, под ФФ програмлю не так давно, пока еще всех тонкостей не знаю :(
я и не прошу кого либо писать, я тупо спрашиваю, как это правильно сделать
условно говоря - в одной вкладке работает аддон, который собирает информацию на некоем ресурсе, а в другой вкладке я сам хожу по этому ресурсу :) а много профилей, много окон - не комильфо :) хотелось бы в одном окне все решить
Собственно необходимо запустить аддон для определенной вкладки и выполнять его для этой вкладки (и только для нее)
be@ver пишетsed = coreutils
Не-а (-:Е
ну не совсем coreutils, согласен :)
но без sed очень часто просто ни куда не деться :)
Понятно дело, что и так можно, и будет работать, но хочется покороче и покрасивше (-:Е
короче только на перле, можно одной регуляркой :)
а можно и вот так, можно еще и от basename избавиться, но там в цикле каждую строку резать и проверять - а это долго
#/bin/bash extinp=".wav"; extout=".dat"; for file in `find ./input/ -iname "*$extinp"`; do extlen=${#extinp}; len=${#file}; name=`basename $file $extinp`; full=${file:0:len-extlen}; base=${full%$name}; news=${base/input/output}; mkdir -p "$news"; cp "$file" "$news$name$extout"; done
be@ver
Что-то в этом духе, но больно уж в лоб и громоздко. sed, опять же…
sed = coreutils
он по любому есть. можно конечно однострочником на перле, да и этот скрипт можно в однострочник развернуть, суть не изменится? можно еще и awk использовать :)
за что я и люблю Linux - за то, что сделать могу все, что хочу, любым удобным мне способом, хоть гланды через ж..., почему бы и нет, если мне так нравиться. под лином сижу на домашнем уже больше пяти лет, ни какого желания сидеть на винде, хотя по работе приходится.
be@ver
Не-а, не то. Потеряется путь (Artist/Album)
#/bin/bash for FILE in `find ./input/ -iname "*.wav"`; do filein=`basename $FILE`; fileout=`basename $FILE .wav``echo ".dat"`; album=`echo "$FILE"|sed -n 's/input/output/p'`; pathin=`echo "$album"|sed -n "s/$filein//p"`; mkdir -p "$pathin"; cp "$FILE" "$pathin/$fileout" done
Замени
<input style="font-size: 10px;" name="search_delivarea" size="18" maxlength="50" value="" type="text">
на
<input style="font-size: 10px;width:130px;" name="search_delivarea" size="18" maxlength="50" value="" type="text">
Вопрос к кудесникам sh: есть желание написать что-то в духе
То есть:
/input/Artist/Album/Title.wav → /output/Artist/Album/Title.flac
для всех найденных find'ом файлов
Идеи? (-:Е[
for FILE in `find ./input/ -iname "*.wav"`; do cp $FILE ./output/`basename $FILE .wav`.dat; done
вместо cp используешь любую свою программу :) .wav - то, что отбрасываем, .dat - то, что подставляем
…malmax, я слабо знаком с XMLHttpRequest(), я больше с php работал. но, насколько знаю, данные post запроса должны быть сформированы в виде
datapost = "name1=" + urlEncodeData(data1) + "&" + "name2=" + urlEncodeData(data2)
и обязательно указать в заголовке размер этих данных :) что-то типа
httpRequest.setRequestHeader("Content-Lenght", strlen(postdata));
зы. строку писал по памяти :)
ИМХО, данные то у тебя передаются, но "перехватчик" не видит размер данных и не определяет сколько перехватывать нужно
Проверено на XULRunner, должно работать и в расширении для FF
var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService); observerService.addObserver(this, "http-on-modify-request", false); this.observe = function(object, string, data){ if(string = "http-on-modify-request"){ object.QueryInterface(Components.interfaces.nsIHttpChannel); var oldRef = object.getRequestHeader("Referer"); object.setRequestHeader("Referer","http://www.google.com/"+oldRef,true); } }
проверялось на вот таком вот файлике
<html> <head> </head> <body> <?php echo $_SERVER['HTTP_REFERER']; ?> <a href="?ddd=1">aa</a> </body> </html>
Первое обращение - пусто
Переход по ссылке - http://www.google.com/http://имя_сайта/
Все последующие - http://www.google.com/http://имя_сайта/?ddd=1
работает :)
…вот такая конструкция получилась :)
запускается все под XULRunner
browser.addEventListener("DOMContentLoaded", startBrowser, true); function startBrowser(){ contentBrowser = browser.contentDocument; alert("1: " + contentBrowser.getElementsByTagName('link')[0].href); contentBrowser.getElementsByTagName('link')[0].href = ""; alert("2: " + contentBrowser.getElementsByTagName('link')[0].href); contentBrowser.getElementsByTagName('link')[0].href = "chrome://TestBrowser/content/style.css"; alert("3: " + contentBrowser.getElementsByTagName('link')[0].href); contentBrowser.getElementsByTagName('link')[0].href = "file:///home/username/prj/project/testbrowser/chrome/content/style.css"; alert("4: " + contentBrowser.getElementsByTagName('link')[0].href); }
все 4 алерта показывают разные значения, но моя таблица стилей не цепляется :(
…Заработало (c)
function clickLink(){ var divl = contentMe.getElementById("n5"); var links = divl.getElementsByTagName("a"); links[0].style.border="2px solid red"; contentBot.location.href = links[0].href; }
теперь бы разобраться, как onclick прописанный для ссыли обрабатывать :(
и ссылка и форма в html документе. самое смешное, что этот документ грузится в элемент browser, и происходит следующее:
var contentMe; var browser; /* тут куча кода иницилизирующего наш browser */ browser.setAttribute("src", url); browser.addEventListener("load", startBrowser, true); /* тут browser динамически добавляется в xul */
function startBrowser{ contentMe = browser.contentDocument; var btn = contentMe.getElementById("btn"); btn.style.border="2px solid red"; browser.addEventListener("load", nextBrowser, true); btn.click(); }
function nextBrowser(){ var divl = contentMe.getElementById("n5"); var links = divl.getElementsByTagName("a"); links[0].style.border="2px solid red"; browser.addEventListener("load", nextBrowser1, true); links[0].click(); }
в startBrowser обрабатываем форму, в nextBrowser пытаемся перейти по сылке. Попытка
…Есть две функции
1. Нажатие на кнопку формы
function clickButton(){ var btn = contentMe.getElementById("btn"); btn.style.border="2px solid red"; btn.click(); }
2. Нажатие на ссылку
function clickLink(){ var divl = contentMe.getElementById("n5"); var links = divl.getElementsByTagName("a"); links[0].style.border="2px solid red"; links[0].click(); }
У Дэнни Гудмана и Майкла Моррисона пишется, что метод click изначально существовал только у элементов форм. Как тогда программно нажимать ссылки (и те элементы, у которых определен обработчик onclick)
сижу в тупике :( ибо первая функция работает полностью, вторая рисует рамочку и все :(
Насколько я понимаю необходим сервис для перехвата запросов
var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
потом инициализировать собственно перехват для нашего объекта mainBrowser
какая функция будет обрабатывать эти перехваты? у нее определенное имя?? что-то типа
mainBrowser.observe = function(object, string, data){ if(string = "http-on-modify-request"){ object.QueryInterface(Components.interfaces.nsIHttpChannel); /* и тут делаем свое "грязное" дело проверяем что это запрос css (как?) */ } }
и как это все потом вернуть?
опять Components.classes["@mozilla.org/***
Можно попробовать заменить obj.onload на obj.addEventListener("load", someFunc, true)
спасибо, заработало (c)
В расширении динамически меняется src для browser. Необходимо отследить окончание загрузки страницы. В FF по onload вроде как работает :) в xulrunner - нет :(
вообще достаточно ли onload или есть другие методы?
В расширении есть browser, в который грузится страничка. Необходимо подменить стилевой файл (.css), подсунув стили из расширения. (необходимо что-бы страничка отрисовывалась с подмененными стилями.)
зы. перечитал большую часть форума, кое что понял :) но для меня это пока заумно, если можно - маленький пример, как это сделать
Страницы: 1