Интересно есть ли возможность перенести настройки скриптов при создании нового профиля без копирования файла prefs.js? Естественно о переносе строк по одной из этого файла нет и речи, слишком долго и не всегда всё гладко проходит.
Перенести папку gm_scripts
Отредактировано voqabuhe (02-06-2013 22:03:22)
Отсутствует
SuperUser пишетИнтересно есть ли возможность перенести настройки скриптов при создании нового профиля без копирования файла prefs.js? Естественно о переносе строк по одной из этого файла нет и речи, слишком долго и не всегда всё гладко проходит.
Перенести папку gm_scripts
Пробовали? Перенеслись настройки?
Отсутствует
Естественно о переносе строк по одной из этого файла нет и речи, слишком долго и не всегда всё гладко проходит.
переносить нужно строки, которые начинаются на
они все одним куском в файле лежат. перенести - дело 30 секунд.
леса живет в лису?
Отсутствует
SuperUser пишетЕстественно о переносе строк по одной из этого файла нет и речи, слишком долго и не всегда всё гладко проходит.
переносить нужно строки, которые начинаются на
они все одним куском в файле лежат. перенести - дело 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/
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
А вообще, лучше откуда-нибудь отсюда начать: http://learn.javascript.ru/
Я там часто бываю. Но к сожалению далеко не всё понятно.
Подскажите ещё как сделать, чтобы выражение типа document.images.myImage вставленное в prompt, можно было подставить вместо obj
Отсутствует
Подскажите ещё как сделать, чтобы выражение типа document.images.myImage вставленное в prompt, можно было подставить вместо obj
Зачем такое может понадобиться?
Можно так:
Но если это не в тестовых целях, то, скорее всего, что-то не так с логикой скрипта.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Я тут спрашивал как создать окно и вставить в него html код, чтобы он отображался именно как код.
Советы, которые мне дали, помогли, но хотелось бы чтоб код выглядел удобочитаемым, "лесенкой". Сейчас всё что удалось добиться - это если я вставляю document.body.innerHTML то выходит "лесенка". А если innerHTML отдельного элемента, код идёт сплошным текстом.
Что можно сделать?
Отсутствует
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\'><'+name+''; }; var openTagNameFoot=function(xmlemptyTag) { return (xmlemptyTag?'/':'')+'></span>'; }; var closeTagName=function(name, xmlemptyTag) { if(xmlemptyTag || emptyTags[name.toLowerCase()]) return ''; return '<span class=\'tag\'></'+name+'></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,'<').replace(/>/g,'>'); }; 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\'><![CDATA[</span>'+text+'<span class=\'cdata\'>]]></span>'+closeTags; } case 8: { text=getTextNodeData(ele); return lineHead()+indent+'<span class=\'comment\'><!--'+text+'--></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 (01-07-2013 13:21:27)
Отсутствует
Lex1 пишет:
Чайник
Если они будут показаны, то скрипт и так остановится.
Я ошибся темой, речь идёт о скрипте не GM, а Firegestures. Но принцип наверное один.
Там в Firegestures если на странице вызван алерт, жест всё равно своё дело делает, а мне это не нужно.
Вот я как раз хочу, чтобы если на экране одно из этих окон (алерт, промпт....), команда не выполнялась.
Отсутствует
Ну, вероятно класс, Object.prototype.toString.call(document.commandDispatcher.focusedWindow).slice(8, -1) не должен быть ChromeWindow
Или, что в данном случае кажется похожим - в фокусе должна быть сама страница, а не интерфейс браузера.
Отредактировано Lex1 (01-07-2013 15:08:16)
Отсутствует
Там в Firegestures если на странице вызван алерт, жест всё равно своё дело делает, а мне это не нужно.
У меня вот так сработало, если в начало кода
Отсутствует
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;
Я теперь и думаю: а какой из них оптимальный?
Отсутствует
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 (01-07-2013 21:44:17)
Отсутствует
Есть код
Как тут сделать event listener на загрузку страницы?
Отсутствует
Чайник добавить http://www.url.php в @include
или
open('http://www.url.php','').document.addEventListener('DOMContentLoaded', OnDOMContentLoaded, false);
Отредактировано CoolCmd (11-07-2013 20:45:50)
леса живет в лису?
Отсутствует
Выделить кодКод:
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);
Алерт не появляется.
Отредактировано Чайник (11-07-2013 21:17:42)
Отсутствует