Полезная информация

В мире Mozilla происходит много интересных событий. Но вам не нужно постоянно посещать новостные сайты, чтобы быть в курсе всех изменений. Зайдите на ленту новостей Mozilla Россия.
  • Форумы
  •  » iMacros
  •  » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

№103-05-2017 12:26:23

InfSub
iMacroModer
 
Группа: Moderators
Откуда: DeepTown
Зарегистрирован: 13-05-2013
Сообщений: 3279
UA: Chrome 58.0
Веб-сайт

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)



iMacros for FireFox - общие вопросы, обсуждение возможностей (Часть 2)



Правила оформления сообщений в данном топике:

1a50e37cd460db106ba5ca4992038a53.jpg


  • Адрес сайта и страницы, на которой возникла проблема, размещается в тегах [spoiler][noindex]http://адрес_сайта/название_страницы[/noindex][/spoiler]

  • Для размещения кода, используйте тег "Code" внутри тега "Spoiler" - [spoiler][code]ваш код[/code][/spoiler]
    или выложите на сайт «Pastebin».
  • При размещении объемных материалов, используйте тег "Spoiler" - [spoiler]ваш текст[/spoiler]
    или выложите на сайт «Pastebin».
  • Размещать изображения в открытом виде. Для размещения скриншотов и других изображений, используйте тег "Spoiler" - [spoiler][img]http://ссылка_на_изображение[/img][/spoiler]
    .


«Можно ответить на любой вопрос, если вопрос задан правильно.»
Платон

«Не каждый вопрос заслуживает ответа.»
Сайрус


Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox


на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!

Отсутствует

 

№115229-05-2020 15:02:47

tiger8265
Участник
 
Группа: Members
Зарегистрирован: 18-04-2020
Сообщений: 4
UA: Chrome 81.0

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

как вытянуть числа из скобок ?
(249 л.с.)  - Только числа

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

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

Выделить код

Код:

SET !VAR1 EVAL("'{{!EXTRACT}}'.replace(/(: /g, '');")

код публикуется в тегах code под спойлером


InfSub

Отредактировано tiger8265 (29-05-2020 15:04:45)

Отсутствует

 

№115326-06-2020 08:29:58

dim222
Участник
 
Группа: Members
Зарегистрирован: 06-03-2016
Сообщений: 381
UA: Yandex 20

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

Блин чот я перегрелся походу!
Не могу понять почему не передаётся объект в анонимную функцию?:usch:

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

Выделить код

Код:

var obj_inject = {
	
	'canvas':{
		
		'r': 0,
		'g': 3,
		'b': -4,
		'a': 2
	}
};

var inject = function(obj) {
	
	window.console.log(obj)
 
};

var script_1 = window.document.createElement('script');
script_1.textContent = "(" + inject + ")(" + obj_inject + ")";
window.document.documentElement.appendChild(script_1);


Знатоки направьте.....что не так???

Отсутствует

 

№115426-06-2020 09:09:01

Squatter
Участник
 
Группа: Members
Зарегистрирован: 11-05-2017
Сообщений: 117
UA: unknown 0.0

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

Так в параметрах вызова же… :/

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

Выделить код

Код:

var obj_inject = {
	
	'canvas':{
		
		'r': 0,
		'g': 3,
		'b': -4,
		'a': 2
	}
};

var inject = function(obj) {
	
	window.console.log(obj)
 
};

inject(obj_inject);

В чём конечная цель?


---------UPD

Чем пытаться внедрять скрипт текстом лучше юзайте wrappedJSObject чтобы получить доступ к пространству имён скриптов текущей страницы


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

Выделить код

Код:

//В макросе выполняем
var win = window.content.document.defaultView.wrappedJSObject;

win.inject = function() {
	window.console.log("test");
};

//В консоле по Ctrl + Shift + k вызываем для проверки

inject();

Отредактировано Squatter (26-06-2020 09:41:05)

Отсутствует

 

№115526-06-2020 11:19:23

dim222
Участник
 
Группа: Members
Зарегистрирован: 06-03-2016
Сообщений: 381
UA: Yandex 20

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

Squatter
Спасибо что откликнулся!
По твоему варианту я пробовал, но .....блин чот проблема возникает ...Не хотит принимать массив аргументов в :

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

Выделить код

Код:

const imageData = getImageData.apply(cont, [0, 0, width, height]);


код с доступом имён

Выделить код

Код:

var obj_inject = {
		
		'canvas':{
			
			'r': 0,
			'g': 3,
			'b': -4,
			'a': 2
		}
	};
	
	
						
		var canvas_inject = function (obj) {
			
			var win = window.content.document.defaultView.wrappedJSObject;
			
			const toBlob = win.HTMLCanvasElement.prototype.toBlob;
			const toDataURL = win.HTMLCanvasElement.prototype.toDataURL;
			const getImageData = win.CanvasRenderingContext2D.prototype.getImageData;
			
			var noisify = function (canvas, cont) {
				
				const shift = obj;
				const width = canvas.width, height = canvas.height;
				
				const imageData = getImageData.apply(cont, [0, 0, width, height]);
				
				for (let i = 0; i < height; i++) {
					for (let j = 0; j < width; j++) {
						const n = ((i * (width * 4)) + (j * 4));
						imageData.data[n + 0] = imageData.data[n + 0] + shift.r;
						imageData.data[n + 1] = imageData.data[n + 1] + shift.g;
						imageData.data[n + 2] = imageData.data[n + 2] + shift.b;
						imageData.data[n + 3] = imageData.data[n + 3] + shift.a;
					}
				}
			};
			
			  Object.defineProperty(win.HTMLCanvasElement.prototype, "toBlob", {
				"value": function () {
				  noisify(this, this.getContext("2d"));
				  return toBlob.apply(this, arguments);
				}
			  });
			  //
			  Object.defineProperty(win.HTMLCanvasElement.prototype, "toDataURL", {
				"value": function () {
				  noisify(this, this.getContext("2d"));
				  return toDataURL.apply(this, arguments);
				}
			  });
			  //
			  Object.defineProperty(win.CanvasRenderingContext2D.prototype, "getImageData", {
				"value": function () {
				  noisify(this.canvas, this);
				  return getImageData.apply(this, arguments);
				}
			  });
			
		};
	
	canvas_inject(obj_inject['canvas']);

При этом если внедрить самовызывающий скрипт то параметры имеенно объектом не передаются...выдаёт 'undefined'

самовызывающий скрипт

Выделить код

Код:

var obj_inject = {
		
		'canvas':{
			
			'r': 0,
			'g': 3,
			'b': -4,
			'a': 2
		}
	};
	
	
						
		var canvas_inject = function (obj) {
			
			const toBlob = HTMLCanvasElement.prototype.toBlob;
			const toDataURL = HTMLCanvasElement.prototype.toDataURL;
			const getImageData = CanvasRenderingContext2D.prototype.getImageData;
			
			var noisify = function (canvas, cont) {
				
				const shift = obj;
				const width = canvas.width, height = canvas.height;
				
				const imageData = getImageData.apply(cont, [0, 0, width, height]);
				
				for (let i = 0; i < height; i++) {
					for (let j = 0; j < width; j++) {
						const n = ((i * (width * 4)) + (j * 4));
						imageData.data[n + 0] = imageData.data[n + 0] + shift.r;
						imageData.data[n + 1] = imageData.data[n + 1] + shift.g;
						imageData.data[n + 2] = imageData.data[n + 2] + shift.b;
						imageData.data[n + 3] = imageData.data[n + 3] + shift.a;
					}
				}
			};
			
			  Object.defineProperty(HTMLCanvasElement.prototype, "toBlob", {
				"value": function () {
				  noisify(this, this.getContext("2d"));
				  return toBlob.apply(this, arguments);
				}
			  });
			  //
			  Object.defineProperty(HTMLCanvasElement.prototype, "toDataURL", {
				"value": function () {
				  noisify(this, this.getContext("2d"));
				  return toDataURL.apply(this, arguments);
				}
			  });
			  //
			  Object.defineProperty(CanvasRenderingContext2D.prototype, "getImageData", {
				"value": function () {
				  noisify(this.canvas, this);
				  return getImageData.apply(this, arguments);
				}
			  });
			
		};
		
		var canvas_Finger = window.document.createElement('script');
		canvas_Finger.textContent = "(" + canvas_inject + ")(" + obj_inject['canvas'] + ")";
		window.document.documentElement.appendChild(canvas_Finger);

а если конкретно указать значения из ключа, то всё робит!
Что за фигня?

Отсутствует

 

№115626-06-2020 13:29:14

Squatter
Участник
 
Группа: Members
Зарегистрирован: 11-05-2017
Сообщений: 117
UA: unknown 0.0

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

блин чот проблема возникает ...Не хотит принимать массив аргументов в

Не туда… совсем


Ладно, если передать объект по твоему способу с внедрением, то так

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

Выделить код

Код:

var obj_inject = {
		
		'canvas':{
			
			'r': 0,
			'g': 3,
			'b': -4,
			'a': 2
		}
	};
	
	

var canvas_inject = function (obj) {
	
	const toBlob = HTMLCanvasElement.prototype.toBlob;
	const toDataURL = HTMLCanvasElement.prototype.toDataURL;
	const getImageData = CanvasRenderingContext2D.prototype.getImageData;
	
	var noisify = function (canvas, cont) {
		
		const shift = obj;
		const width = canvas.width, height = canvas.height;
			
		const imageData = getImageData.apply(cont, [0, 0, width, height]);
		
		for (let i = 0; i < height; i++) {
			for (let j = 0; j < width; j++) {
				const n = ((i * (width * 4)) + (j * 4));
				imageData.data[n + 0] = imageData.data[n + 0] + shift.r;
				imageData.data[n + 1] = imageData.data[n + 1] + shift.g;
				imageData.data[n + 2] = imageData.data[n + 2] + shift.b;
				imageData.data[n + 3] = imageData.data[n + 3] + shift.a;
			}
		}
	};
			
	Object.defineProperty(HTMLCanvasElement.prototype, "toBlob", {
		"value": function () {
		  noisify(this, this.getContext("2d"));
		  return toBlob.apply(this, arguments);
		}
	});
	//
	Object.defineProperty(HTMLCanvasElement.prototype, "toDataURL", {
		"value": function () {
		  noisify(this, this.getContext("2d"));
		  return toDataURL.apply(this, arguments);
		}
	});
	//
	Object.defineProperty(CanvasRenderingContext2D.prototype, "getImageData", {
		"value": function () {
		  noisify(this.canvas, this);
		  return getImageData.apply(this, arguments);
		}
	});

};


var canvas_Finger = window.document.createElement('script');
canvas_Finger.textContent = "(" + canvas_inject + ")(" + JSON.stringify(obj_inject['canvas']) + ")";
window.document.documentElement.appendChild(canvas_Finger);

Отсутствует

 

№115726-06-2020 14:44:34

dim222
Участник
 
Группа: Members
Зарегистрирован: 06-03-2016
Сообщений: 381
UA: Yandex 20

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

Squatter
Тьфу ты блин ........
Мне даже и в голову не пришло перевести в строку Json.
Спасибо....подсказал ...направил!:beer:

Добавлено 26-06-2020 14:49:52
Squatter
Изначально пробовал через"wrappedJSObject", но ошибку выдавало о не достатке аргументов (где писал про массив с аргументами), психанул бросил , так и не понял в чём заморока была.
Если для тебя это очевидные вещи , тыкни носом .

Отредактировано dim222 (26-06-2020 14:49:52)

Отсутствует

 
  • Форумы
  •  » iMacros
  •  » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia
Язык отображения форума: [Русский] [English]