- PVSM.RU - https://www.pvsm.ru -
Привет.
Решил написать про небольшую фичу хрома, которую случайно обнаружил однажды.
Как её использовать — решайте сами.
Сразу покажу пример [1], чтобы не мусолить (тестировал на последнем Хроме, который у меня был):
var gn = Object.getOwnPropertyNames.bind(Object)
var f = function(o) {
if(f.caller && f.caller.toString &&
f.caller.toString().indexOf('object&&ArrayBuffer.isView(o)&&o.length>9999') > 0) {
console.log(f.caller)
}
return gn(o);
}
Object.getOwnPropertyNames = f
Если начать что-то вводить в консоль после запуска кода выше, то при вводе в консоль начнет выпадать какая-то функция.
Вот эта:
(function getCompletions(type) {
var object;
if (type === 'string')
object = new String('');
else if (type === 'number')
object = new Number(0);
else if (type === 'boolean')
object = new Boolean(false);
else
object = this;
var result = [];
try {
for (var o = object; o; o = Object.getPrototypeOf(o)) {
if ((type === 'array' || type === 'typedarray') && o === object && ArrayBuffer.isView(o) && o.length > 9999)
continue;
var group = {
items: [],
__proto__: null
};
try {
if (typeof o === 'object' && o.constructor && o.constructor.name)
group.title = o.constructor.name;
} catch (ee) {}
result[result.length] = group;
var names = Object.getOwnPropertyNames(o);
var isArray = Array.isArray(o);
for (var i = 0; i < names.length; ++i) {
if (isArray && /^[0-9]/.test(names[i]))
continue;
group.items[group.items.length] = names[i];
}
}
} catch (e) {}
return result;
}
)
Очевидно, что с ее помощью гугл Хроум выдает нам саггешены, которые будут показаны в выпадающем меню при вводе текста в консоли.
Можете смело переопределять возвращаемые функцией Object.getOwnPropertyNames значения, и вставлять туда всякий мусор, если захотите. Так же вы просто можете реагировать на ввод пользователя в консоле. (В примере мы просто выводим ту самую функцию хрома).
Все :)
Репозиторий вот [2]
Автор: Свят Митин
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/256011
Ссылки в тексте:
[1] пример: https://wasiher.github.io/chrome_console_input_catch/
[2] вот: https://github.com/wasiher/chrome_console_input_catch
[3] Источник: https://habrahabr.ru/post/329320/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.