В кнопке, которая нажимает произвольную ссылку, код:
function makeURL (url) { var uri = makeURI (url); try { uri = uri. QueryInterface (Components. interfaces. nsIURL); } catch (e) { uri = null; } return uri; } var doc = gBrowser. contentDocument; var cdurl = makeURL (doc. location. href); cdurl. ref = ""; var links = doc. links; var inlinks = []; var curl; for (var i = 0; i < links. length; i++) { curl = makeURL (links [i]. href); if (curl && (curl. host == cdurl. host)) inlinks. push (links [i]. href); } if (inlinks. length != 0) { var ind = Math. floor (Math. random () * inlinks. length); loadURI (inlinks [ind]); }
Она берет ссылку и вводит её как из закладки (без реферала), можно ли сделать так, чтобы текущую ссылку она использовала, как реферал к открываемой (ну как обычный переход по ссылке внутри сайта)
Отсутствует
А возможно без дополнительных плагинов сделать screenshot всей открытой странички?
SiteShoter v1.38 http://www.nirsoft.net/utils/web_site_screenshot.html + Кнопка запуска внешнего приложенияhttp://forum.mozilla-russia.org/viewtop … 68#p401368
может быть умные люди подскажут как запуститъ SiteShoter с передачей адреса страницы.
Отсутствует
bunda1
нет, внешнее не выход
может быть умные люди подскажут как запуститъ SiteShoter с передачей адреса страницы.
тут args =getBrowser().contentDocument.location.href;
для function startProcess(path, args) {
Внешнюю утилитку сохранения скрина сайта я и сам написал на C#, но я не знаю JavaScript, и тут мне нужна ваша помощь...
Я думаю задача выполнима,т.к. есть Screengrab который всяко-разно сохраняет страничку
Отсутствует
...есть Screengrab который всяко-разно сохраняет страничку
savpro
Pearl Crescent Page Saver Basic на мой взгляд куда лучше
Отсутствует
Мое почтение гуру кнопок Есть весьма полезное расширение BlockSite,но явно недоработанное.Ни в контексте,ни на панельках,нет кнопок добавления сайта в блокируемые.Реально ли сварганить такую кнопочку для BlockSite?
Или может посоветуете аналогичное расширение,кроме CensureBlock и Adblock
Отсутствует
savpro
на FF 3.5 работает(не всегда),нужно переделать для FF 3.6
// Capture Web Page
(function(){ var captureMenu = document.createElement("menuitem"); captureMenu.setAttribute("label","\Capture Web Page"); captureMenu.addEventListener("command",function(){ var win = window.content; var w = win.document.width; var h = win.document.height; var pos = document.getElementById('status-bar'); var scrollbox = document.createElement('scrollbox'); scrollbox.width = '1'; scrollbox.height = '1'; pos.appendChild(scrollbox); var canvas = win.document.createElement('canvas'); canvas.style.display = 'inline'; canvas.width = w; canvas.height = h; scrollbox.appendChild(canvas); var ctx = canvas.getContext("2d"); ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.save(); ctx.scale(1.0, 1.0); ctx.drawWindow(win, 0, 0, w, h, "rgb(255,255,255)"); ctx.restore(); var url = canvas.toDataURL("image/png"); const IO_SERVICE = Components.classes['@mozilla.org/network/io-service;1'] .getService(Components.interfaces.nsIIOService); url = IO_SERVICE.newURI(url, null, null); var fp = Components.classes['@mozilla.org/filepicker;1'] .createInstance(Components.interfaces.nsIFilePicker); fp.init(window, "Save Screenshot As", fp.modeSave); fp.appendFilters(fp.filterImages); fp.defaultExtension = "png"; fp.defaultString = win.document.title + ".png"; if ( fp.show() == fp.returnCancel || !fp.file ) return; var wbp = Components.classes['@mozilla.org/embedding/browser/nsWebBrowserPersist;1'] .createInstance(Components.interfaces.nsIWebBrowserPersist); wbp.saveURI(url, null, null, null, null, fp.file); pos.removeChild(scrollbox); },false); document.getElementById("menu_ToolsPopup").insertBefore( captureMenu, document.getElementById("sanitizeSeparator")); })();
Отсутствует
Да вроде работал в опере...
А в Firefox+GreaseMonkey ?
Добавлено 15-12-2010 01:10:31
Она берет ссылку и вводит её как из закладки (без реферала), можно ли сделать так, чтобы текущую ссылку она использовала, как реферал к открываемой (ну как обычный переход по ссылке внутри сайта)
referrer - второй аргумент в loadURI, видимо как-то так:
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
savpro
на FF 3.5 работает(не всегда),нужно переделать для FF 3.6
// Capture Web Pageскрытый текст/*Initialization Code*/Выделить кодКод:
(function(){ var captureMenu = document.createElement("menuitem"); captureMenu.setAttribute("label","\Capture Web Page"); captureMenu.addEventListener("command",function(){ var win = window.content; var w = win.document.width; var h = win.document.height; var pos = document.getElementById('status-bar'); var scrollbox = document.createElement('scrollbox'); scrollbox.width = '1'; scrollbox.height = '1'; pos.appendChild(scrollbox); var canvas = win.document.createElement('canvas'); canvas.style.display = 'inline'; canvas.width = w; canvas.height = h; scrollbox.appendChild(canvas); var ctx = canvas.getContext("2d"); ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.save(); ctx.scale(1.0, 1.0); ctx.drawWindow(win, 0, 0, w, h, "rgb(255,255,255)"); ctx.restore(); var url = canvas.toDataURL("image/png"); const IO_SERVICE = Components.classes['@mozilla.org/network/io-service;1'] .getService(Components.interfaces.nsIIOService); url = IO_SERVICE.newURI(url, null, null); var fp = Components.classes['@mozilla.org/filepicker;1'] .createInstance(Components.interfaces.nsIFilePicker); fp.init(window, "Save Screenshot As", fp.modeSave); fp.appendFilters(fp.filterImages); fp.defaultExtension = "png"; fp.defaultString = win.document.title + ".png"; if ( fp.show() == fp.returnCancel || !fp.file ) return; var wbp = Components.classes['@mozilla.org/embedding/browser/nsWebBrowserPersist;1'] .createInstance(Components.interfaces.nsIWebBrowserPersist); wbp.saveURI(url, null, null, null, null, fp.file); pos.removeChild(scrollbox); },false); document.getElementById("menu_ToolsPopup").insertBefore( captureMenu, document.getElementById("sanitizeSeparator")); })();
во, отлично, немного поковырял этот код и получилось сделать скрин как мне и нужно, спасибо! +1 ))
...есть Screengrab который всяко-разно сохраняет страничку
savpro
Pearl Crescent Page Saver Basic на мой взгляд куда лучше
Ага, отличное дополнение) Но мне нужен был голый код,т.к. пишу плагин на WPF, небольшое приложение работающее в FireFox, и решил некоторую функциональность сбросить на кнопку, а JavaScript некогда изучать, но спасибо добрым энтузиастам, помогают
Отредактировано savpro (15-12-2010 05:17:51)
Отсутствует
Друзья! Товарищи!
а подскажите код кнопки, для того что бы не спрашивал мозила закрывать страницу или нет.
вот как на этом сайте
http://flash-rush.ru/bestgames_tsno.html?tid=999177913
скрин
http://s003.radikal.ru/i201/1012/47/fa900f836779.jpg
Отредактировано Igor22ru (15-12-2010 09:45:32)
Отсутствует
vv07
Если мне память не изменяет, нужный код уже есть где-то в этой теме. Но форум работает с перебоями, "Версия для печати" у меня не открывается.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Кнопка перестала работать...
Тогда так:
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Есть совсем небольшое, но достаточно удобное дополнение для скриншотов страниц: Abduction!,
может из его кода как то наковырять кнопку можно?
Отсутствует
Chis
в код
var cacheService = Components.classes["@mozilla.org/network/cache-service;1"]
.getService(Components.interfaces.nsICacheService);
try {
cacheService.evictEntries(Components.interfaces.nsICache.STORE_ANYWHERE);
} catch(ex) {
*/
var cacheSvc = Components.classes["@mozilla.org/network/cache-service;1"]
.getService(Components.interfaces.nsICacheService);
const cache = Components.interfaces.nsICache;
try {
cacheSvc.evictEntries(cache.STORE_ON_DISK);
cacheSvc.evictEntries(cache.STORE_IN_MEMORY);
}
catch(e) {
}
mzfx
Отсутствует
Друзья! Товарищи!а подскажите код кнопки, для того что бы не спрашивал мозила закрывать страницу или нет.вот как на этом сайте http://flash-rush.ru/bestgames_tsno.html?tid=999177913скринhttp://s003.radikal.ru/i201/1012/47/fa900f836779.jpg
Отредактировано Igor22ru (Вчера 12:45:32)
а вот этому человеку может ктонибудь поможет?
а есть такое дополнение что бы можно было по шаблону грузить изображение? или по размеру?
Отсутствует
Anton
Прашу а помощи.
Вот /*Initialization Code*/ котрое дает возможность выделить все на странице или в текстовом поле двойным кликом левой клавишей мыши. Пажалуйста дай код каторое атключает етот код //dblclick Select All... на страныцах с адресамы
http://www.translit.ru/keyboard/
chrome://browser/content/bookmarks/bookmarksPanel.xul
chrome://browser/content/places/places.xul
//dblclick Select All........................................
/*Initialization Code*/ gBrowser.addEventListener("dblclick", function(event) { if (event.button != 0) { return; } event.preventDefault(); document.getElementById("contentAreaContextMenu").hidePopup(); document.getElementById("cmd_selectAll").doCommand(); }, false);
Вот /*Initialization Code*/ котрое дает возможность удерживая левую кнопку мыши, движением мыши вверх-вниз открыть ссылку в новой активной или фоновой вкладке или выделенную фразу отправить в поисковик(аналог расширению Easy DragToGo). Пажалуйста дай код каторое атключает етот код //Drag To Go.. на страныцах с адресамы
chrome://browser/content/bookmarks/bookmarksPanel.xul
chrome://browser/content/places/places.xul
//Drag To Go...........................................
/*Initialization Code*/ var easyDragToGo = { loaded: false, moving: false, StartAlready: false, onStartEvent: null, // drag start event onDropEvent: null, // drag drop event aXferData: null, // drag data aDragSession: null, // drag session onLoad: function() { if (!easyDragToGo.loaded) { var contentArea = getBrowser().mPanelContainer; if (contentArea) { eval("nsDragAndDrop.checkCanDrop =" + nsDragAndDrop.checkCanDrop.toString().replace( 'if ("canDrop" in aDragDropObserver)', 'if (easyDragToGo.StartAlready) this.mDragSession.canDrop = true; $&') ); contentArea.addEventListener('draggesture', function(e) {easyDragToGo.dragStart(e)}, true); contentArea.addEventListener('dragover', function(e) { nsDragAndDrop.dragOver(e, easyDragToGoDNDObserver); }, false); contentArea.addEventListener('dragdrop', function(e) { nsDragAndDrop.drop(e, easyDragToGoDNDObserver); }, false); contentArea.addEventListener('drop', function(e) { nsDragAndDrop.drop(e, easyDragToGoDNDObserver); }, false); } easyDragToGo.loaded = true; } }, dragStart: function(aEvent) { this.onStartEvent = aEvent; this.StartAlready = true; }, clean: function() { this.StartAlready = false; if (this.onDropEvent) { this.onDropEvent.preventDefault(); this.onDropEvent.stopPropagation(); } this.onStartEvent = this.onDropEvent = this.aXferData = this.aDragSession = null; }, openURL: function(aURI, src, target, X, Y) { if (!aURI) return; var act = ""; var browser = getTopWin().getBrowser(); var uri = ""; var bg = true; var postData = {}; act = Y<0 ? "link-fg" : "link-bg"; // get search strings if ((target == "text" || target == "fromContentOuter.text")) { var submission = this.getSearchSubmission(aURI, act); if (submission) { uri = submission.uri.spec; postData.value = submission.postData; if (uri) act = act.replace("link", "search"); else act = ""; } else act = ""; if (!act) alert("No Search Engines!"); } switch (act) { case "search-fg": case "link-fg": // open a new tab and selected it bg = false; case "search-bg": case "link-bg": if (!uri) uri = getShortcutOrURI(aURI, postData); try { var cur = (!bg || browser.mTabs.length == 1) && browser.webNavigation.currentURI.spec == "about:blank" && !browser.mCurrentBrowser.webProgress.isLoadingDocument || (/^(javascript|mailto):/i.test(uri)); } catch(e) {} if (cur) // open in current tab loadURI(uri, null, postData.value, true); else { // for Tree Style Tab extension if ("TreeStyleTabService" in window && (target == "link" && !this.aDragSession.sourceNode.localName || target == "img")) try {TreeStyleTabService.readyToOpenChildTab(gBrowser.selectedTab);} catch(e) {} // open a new tab browser.loadOneTab(uri, null, null, postData.value, bg, true); } break; default: break; } }, customCode: function(code, url, src, target, X, Y) { eval(code); }, getSearchSubmission: function(searchStr, action) { try { var ss = Components.classes["@mozilla.org/browser/search-service;1"] .getService(Components.interfaces.nsIBrowserSearchService); var engine, engineName; if ( /^search-(.+?)-?(fg|bg|cur)$/.test(action) ) engineName = RegExp.$1; else engineName = "c"; if ( engineName == "c" ) engine = ss.currentEngine || ss.defaultEngine; else if ( engineName == "d" ) engine = ss.defaultEngine || ss.currentEngine; else { engine = ss.getEngineByName(engineName); if (!engine) engine = ss.currentEngine || ss.defaultEngine; } return engine.getSubmission(searchStr, null); } catch (e) { return null; } }, SelectedText: function(node) { if (!node) return ""; if ( node.localName == "TEXTAREA" || (node.localName == "INPUT" && node.type == "text") ) return node.value.substring(node.selectionStart, node.selectionEnd); else return document.commandDispatcher.focusedWindow.getSelection().toString(); }, seemAsURL: function(url) { // url test var DomainName = /(\w+(\-+\w+)*\.)+\w{2,7}/; var HasSpace = /\S\s+\S/; var KnowNameOrSlash = /^(www|bbs|forum|blog)|\//; var KnowTopDomain1 = /\.(com|net|org|gov|edu|info|mobi|mil|asia)$/; var KnowTopDomain2 = /\.(de|uk|eu|nl|it|cn|be|us|br|jp|ch|fr|at|se|es|cz|pt|ca|ru|hk|tw|pl)$/; var IsIpAddress = /^([1-2]?\d?\d\.){3}[1-2]?\d?\d/; return !HasSpace.test(url) && DomainName.test(url) && (KnowNameOrSlash. test(url) || KnowTopDomain1.test(url) || KnowTopDomain2.test(url) || IsIpAddress.test(url)); }, getForceURL: function(url) { var code; var str = ""; url = url.replace(/\s|\r|\n|\u3000/g, ""); for (var i = 0; i < url.length; i++) { code = url.charCodeAt(i); if (code >= 65281 && code <= 65373) str += String.fromCharCode(code - 65248); else str += url.charAt(i); } str = this.fixupSchemer(str); str = this.SecurityCheckURL(str); return str; }, SecurityCheckURL: function(aURI) { if ( /^data:/.test(aURI) ) return ""; if ( /^javascript:/.test(aURI) || /^about:/.test(aURI)) return aURI; var sourceURL = getBrowser().currentURI.spec; const nsIScriptSecurityManager = Components.interfaces.nsIScriptSecurityManager; var secMan = Components.classes["@mozilla.org/scriptsecuritymanager;1"] .getService(nsIScriptSecurityManager); const nsIScriptSecMan = Components.interfaces.nsIScriptSecurityManager; try { secMan.checkLoadURIStr(sourceURL, aURI, nsIScriptSecMan.STANDARD); } catch(e) { aURI = ""; } return aURI; }, fixupSchemer: function(aURI) { if ( /^(?::\/\/|\/\/|\/)?(([1-2]?\d?\d\.){3}[1-2]?\d?\d(\/.*)?|[a-z]+[\-\w]+\.[\-\w\.]+(\/.*)?)$/i.test(aURI) ) aURI = "http://" + RegExp.$1; else if ( /^\w+[\-\.\w]*@(\w+(\-+\w+)*\.)+\w{2,7}$/.test(aURI) ) aURI = "mailto:" + aURI; else { var table = "ttp=>http,tp=>http,p=>http,ttps=>https,tps=>https,ps=>https,s=>https"; var regexp = new RegExp(); if (aURI.match(regexp.compile('^('+ table.replace(/=>[^,]+|=>[^,]+$/g, '').replace(/\s*,\s*/g, '|')+'):', 'g'))) { var target = RegExp.$1; table.match(regexp.compile('(,|^)'+target+'=>([^,]+)')); aURI = aURI.replace(target, RegExp.$2); } } return aURI; } }; var easyDragToGoDNDObserver = { onDragOver: function(aEvent, aFlavour, aDragSession) { aDragSession.canDrop = true; // for drag tabs or bookmarks if (!easyDragToGo.StartAlready) { easyDragToGo.onStartEvent = aEvent; easyDragToGo.StartAlready = true; } }, onDrop: function(aEvent, aXferData, aDragSession) { if (!easyDragToGo.StartAlready) return; easyDragToGo.onDropEvent = aEvent; easyDragToGo.aXferData = aXferData; easyDragToGo.aDragSession = aDragSession; var sNode = aDragSession.sourceNode; var url; if ( !sNode ) { // Drag and Drop from content outer try {url = aXferData.data.replace( /^[\s\n]+|[\s\n]+$/g, '' )} catch(e) {} if (!url) { easyDragToGo.clean(); return; } var target = "fromContentOuter.text"; if ( easyDragToGo.seemAsURL(url) || (/^file:\/\/\/[\S]+$/.test(url)) ) { //force it to a url or local file/directory if ( /^file:\/\/\//.test(url)) { if ( /([^\/]+\.(xpi|jar))$/.test(url) ) { eval("InstallTrigger.install({ '" + RegExp.$1 + "' : url })"); easyDragToGo.clean(); return; } else target = "fromContentOuter.link"; } else { var tmpurl = url; url = easyDragToGo.fixupSchemer(url); url = easyDragToGo.SecurityCheckURL(url); if (url) target = "fromContentOuter.link"; else url = tmpurl; } } easyDragToGo.openURL(url, null, target); } else { // Drag and Drop from Content area var relX = aEvent.screenX - easyDragToGo.onStartEvent.screenX; var relY = aEvent.screenY - easyDragToGo.onStartEvent.screenY; // do nothing with drag distance less than 10px if ( Math.abs(relX) < 10 && Math.abs(relY) < 10 ) { easyDragToGo.clean(); return; } var str, src; var selectStr = ""; var type = "STRING"; var target = "link"; url = str = aXferData.data.replace( /\r\n/g, "\n").replace( /\r/g, "\n"); try { selectStr = easyDragToGo.SelectedText(easyDragToGo.onStartEvent.target); selectStr = selectStr.replace( /\r\n/g, "\n").replace( /\r/g, "\n"); } catch(e) {} if (str != selectStr) { var idx = str.indexOf("\n"); if (idx > 0) { url = str.substr(0, idx); str = str.substr(idx + 1); } if (str == selectStr) url = str; else if ( !(/\s|\n/.test(url)) && (/^([a-z]{2,7}:\/\/|mailto:|about:|javascript:)/i.test(url)) ) type = "URL"; else url = selectStr; } else if (!(/\s|\n/.test(url)) && (/^([a-z]{2,7}:\/\/|mailto:|about:|javascript:)/i.test(url))) type = "URL"; url = url.replace( /^[\s\n]+|[\s\n]+$/g, '' ); if ( url && type == "URL" ) { src = url = easyDragToGo.SecurityCheckURL(url); if (sNode.nodeName == "IMG" || sNode.nodeName == "A" && !sNode.textContent && sNode.firstElementChild instanceof HTMLImageElement) { try {src = sNode.src || sNode.firstElementChild.src;} catch(e) {} target = "img"; } else if (aEvent.ctrlKey) { // as text with ctrlkey var aNode = easyDragToGo.onStartEvent.target; while (aNode && aNode.nodeName != "A") aNode = aNode.parentNode; if (aNode && aNode.textContent) { url = aNode.textContent; target = "text"; } } } else if (url) { var tmpurl = url; if (aEvent.ctrlKey) { url = easyDragToGo.getForceURL(url) // force convert to a url if (url) target = "link"; else url = tmpurl; } else if ( easyDragToGo.seemAsURL(url) ) { //seem as a url url = easyDragToGo.fixupSchemer(url); url = easyDragToGo.SecurityCheckURL(url); if (!url) { // not a url, search it url = tmpurl; target = "text"; } } else //it's a text string, so search it target = "text"; } easyDragToGo.openURL(url, src, target, relX, relY); } easyDragToGo.clean(); }, getSupportedFlavours: function() { var flavourSet = new FlavourSet(); flavourSet.appendFlavour("text/x-moz-url"); flavourSet.appendFlavour("text/unicode"); return flavourSet; } }; easyDragToGo.onLoad();
Отредактировано bunda1 (29-12-2010 20:17:47)
Отсутствует
dblclick Select All
var disabled = [
"http://www.translit.ru/keyboard/",
"chrome://browser/content/bookmarks/bookmarksPanel.xul",
"chrome://browser/content/places/places.xul"
];
gBrowser.addEventListener("dblclick", function(event) {
if (event.button != 0) {
return;
}
if (disabled.indexOf(content.location.href) != -1)
return;
...
Drag To Go
Наверное, так:
var disabled = [
"chrome://browser/content/bookmarks/bookmarksPanel.xul",
"chrome://browser/content/places/places.xul"
];
...
onDrop: function(aEvent, aXferData, aDragSession) {
if (disabled.indexOf(content.location.href) != -1)
return;
if (!easyDragToGo.StartAlready) return;
....
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует