Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » JavaScript (Greasemonkey)

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3

Открыть новую тему     Написать ответ в эту тему

n0tkn0w

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Появилась идея дополнить сайт данными с другого сайта. Есть таблица:
http://finviz.com/screener.ashx?v=121
Нужно в каждой строке подставлять информацию (или заменять имеющуюся) с другого сайта.  
 
Это реально сделать без особых головняков или же сотнями строк не обойтись?

Всего записей: 65 | Зарегистр. 07-06-2014 | Отправлено: 14:18 27-05-2016
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
n0tkn0w
Javascript не может по нормальному брать информацию с чужого сайта, не с которого загружен. А манки вставляет код в страницу, то есть для браузера это код с открытого сайта. Я не пробовал, но так мне подсказывает логика.

Всего записей: 9716 | Зарегистр. 20-09-2014 | Отправлено: 16:35 27-05-2016
zzz528

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Насколько знаю для манки доступно Microsoft.XMLHTTP через котрый можеш загружать откуда угодно. А  без особых головняков не обойтись никак.

Всего записей: 1093 | Зарегистр. 20-06-2005 | Отправлено: 14:54 01-06-2016
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zzz528

Цитата:
Насколько знаю для манки доступно Microsoft.XMLHTTP

Это доступно только в internet explorer, через ActiveX. Где вы видели манки для ie?

Всего записей: 9716 | Зарегистр. 20-09-2014 | Отправлено: 19:19 01-06-2016
zzz528

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Это доступно только в internet explorer

 
Неправда, оно доступно любой программе, я, например им пользовался в C# скриптах, ну и читайте  https://wiki.greasespot.net/FAQ#What_does_Greasemonkey_do.3F

Всего записей: 1093 | Зарегистр. 20-06-2005 | Отправлено: 10:46 02-06-2016
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zzz528

Цитата:
например им пользовался в C# скриптах

вы не путайте палец с..  
Greasemonkey всего лишь надстройка в браузер, которая написана на js и XUL и использует js движок браузера. То есть использует то, что дает js данного браузера (не IE).
Когда вы пишете свою программу на C#, то используете системные библиотеки, которые, так как являются созданием мелкомягких, предоставляют доступ к Microsoft.XMLHTTP и другим вещам из IE (который так же использует библиотеки от Windows).
 
А теперь даже просто представьте ситуацию, когда вы используете Firefox и этот аддон в Linux - ну откуда там Microsoft.XMLHTTP? Манки будет использовать то, что дает сам браузер, а в FF нет подобной вещи, есть XMLHttpRequest API.
https://ru.wikipedia.org/wiki/XMLHttpRequest
 

Цитата:
Создание экземпляра объекта XMLHttpRequest.
 
На этой стадии необходима отдельная реализация для разных браузеров. Конструкция создания объекта отличается: в IE 5 — IE 6 она реализована через ActiveXObject, а в остальных браузерах (IE 7 и выше, Mozilla, Opera, Chrome, Netscape и Safari) — как встроенный объект типа XMLHttpRequest.
 
Вызов для ранних версий Internet Explorer выглядит так:
 
var req = new ActiveXObject("Microsoft.XMLHTTP");
В остальных браузерах:
 
var req = new XMLHttpRequest();

 
поэтому, в данной ситуации, некорректно говорить о Microsoft.XMLHTTP

Всего записей: 9716 | Зарегистр. 20-09-2014 | Отправлено: 11:01 02-06-2016 | Исправлено: Mavrikii, 11:04 02-06-2016
n0tkn0w

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii, а посчитать среднее арифметическое данных, и т.п.,  на странице, не проблема для этого движка?  

Всего записей: 65 | Зарегистр. 07-06-2014 | Отправлено: 20:41 03-06-2016 | Исправлено: n0tkn0w, 20:42 03-06-2016
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
n0tkn0w

Цитата:
на странице, не проблема для этого движка?  

все, что умеет javascript, умеет и он - потому что использует javascript

Всего записей: 9716 | Зарегистр. 20-09-2014 | Отправлено: 20:54 03-06-2016
Vasily_Koshkin



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Никто случайно не встречал подобного?
http://userscripts-mirror.org/scripts/show/166222
Не то, чтобы не работает совсем, но не работает так, как надо. Или с этим не сюда?

Всего записей: 1132 | Зарегистр. 07-02-2004 | Отправлено: 15:03 22-03-2019 | Исправлено: Vasily_Koshkin, 15:04 22-03-2019
Xant1k



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сюда- сюда.
Подобные скрипты как правило надо искать на всякого рода псевдо-хакерских форумах или для скрипт-кидди.

Всего записей: 2297 | Зарегистр. 20-02-2009 | Отправлено: 15:28 22-03-2019
Vasily_Koshkin



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Xant1k

Цитата:
Подобные скрипты как правило надо искать на всякого рода псевдо-хакерских форумах или для скрипт-кидди.

Просто вручную не могу справиться. Пока сотню удаляю, две сотни новых добавляются, прямо как в сказке. Подумал, может хоть скрипт чем-то поможет.

Всего записей: 1132 | Зарегистр. 07-02-2004 | Отправлено: 16:14 22-03-2019
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пытаюсь убрать фокус с яндекс-поля ввода, Firefox  

Код:
/ ==UserScript==
// @name     UnFocus yandex  
// @version  1
// @grant    none
// ==/UserScript==
(function() {
 
var aaa = document.getElementsByClassName('input__control');
aaa.blur();
}
)();

Не работает, почему то не хочет исполнять aaa.blur(); Его убираем, ставим алерт дальше для проверки - он работает. С  ним нет.  
Что не так? Может blur уже не поддерживается ?

Всего записей: 1329 | Зарегистр. 08-10-2011 | Отправлено: 21:56 16-05-2019 | Исправлено: xerpal, 21:57 16-05-2019
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xerpal

Цитата:
Что не так?

посмотреть чему равно aaa, возможно элемента на момент вызова еще нет не странице.
да.. и
Цитата:
getElementsByClassName
возвращает массив элементов, поэтому либо первый (если есть), либо в цикле

Всего записей: 9716 | Зарегистр. 20-09-2014 | Отправлено: 23:30 16-05-2019 | Исправлено: Mavrikii, 23:31 16-05-2019
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
возвращает массив элементов, поэтому либо первый (если есть), либо в цикле

Да, aaa[0].blur(); перестал выдавать ошибку и элемент находится.  
Но проблему не решает - у яндекса какой-то там железобетонный фокус стоит, не пропадает в принципе.

Всего записей: 1329 | Зарегистр. 08-10-2011 | Отправлено: 03:46 17-05-2019
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xerpal

Цитата:
 не пропадает в принципе

может цеплять событие потери фокуса и возвращать обратно.
или срабатывать вообще просто после вашего.
не знаю о чем речь.

Всего записей: 9716 | Зарегистр. 20-09-2014 | Отправлено: 04:54 17-05-2019
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
может цеплять событие потери фокуса и возвращать обратно.  

Мне надо наоборот - чтобы фокус не был перманентно в поле поиск. При перелистывании табов я пользуюсь клавишами 1-2 , в итоге с яндекса так не уйти, он эти 1 и 2 вставляет в поле ввода, типо поиск.  
Вот от этого я хочу избавиться.
А там даже кликаешь на страницу - и все равно фокус работает/ Притом эта дрянь на любой странице, где есть поле поиска яндекс.

Всего записей: 1329 | Зарегистр. 08-10-2011 | Отправлено: 07:44 17-05-2019 | Исправлено: xerpal, 07:48 17-05-2019
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xerpal

Цитата:
Мне надо наоборот  

вы читаете вообще? я говорил про работу сайта, а не ваш код.
внятно, что и где? со ссылкой.

Всего записей: 9716 | Зарегистр. 20-09-2014 | Отправлено: 07:46 17-05-2019
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
вы читаете вообще? я говорил про работу сайта, а не ваш код.
внятно, что и где? со ссылкой.
 

ну я вроде пояснил. Попробую ещё раз. К примеру, https://news.yandex.ru или на https://yandex.ru/ при нажатии клавиш "1" или "2" эти клавиши просто добавляются в поле поиска, даже если оно не было в фокусе( кликаем перед этим по сайту). Но у меня эти клавиши забиты в браузере для навигации по вкладкам( по примеру Оперы старой).  
Если бы не было этого странного принудительного фокуса - на 1 я бы перешел на вкладку левее, а на 2 - правее.  
Вот такая проблема. Хочется чтобы как у остальных сайтов( как у гугла к примеру) - жмем 1 - переходим на вкладку левее, жмем 2 - правее.

Всего записей: 1329 | Зарегистр. 08-10-2011 | Отправлено: 07:53 17-05-2019
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xerpal
там дело не в блуре, а в обработчике нажатий на клавиши, который привязан к body тегу.
обработчиков на keydown, keypressed, keyup много, выяснять какой и что - муторно.
а один из них и передает нажатые данные в поисковую форму.
 
можно подгрузить код так, чтобы свой обработчик был первым, и в нем запретить распространение события далее (чтобы не срабатывали остальные обработчики).
 
к примеру (подключил jQuery, лень вспоминать как писать на чистом js)

Код:
// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://news.yandex.ru/*
// @grant        none
// @require      http://code.jquery.com/jquery-3.3.1.min.js
// @run-at       document-start
// ==/UserScript==
 
(function($) {
    'use strict';
    $(function() {
       $('body').on('keypressed keydown keyup', function(e) {
          e.stopPropagation();
          return false;
       });
    });
})(jQuery);

но это может отрубить и работу переключений между табами (а может и нет)

Всего записей: 9716 | Зарегистр. 20-09-2014 | Отправлено: 08:00 17-05-2019 | Исправлено: Mavrikii, 08:09 17-05-2019
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
но это может отрубить и работу переключений между табами (а может и нет)

Да, так вообще никуда не переходит. Отрубило. Даже F5 отрубило.  
 
PS я и не знал, что jquery можно использовать тут - мучался с ванильным JS, который уже совсем забыл

Всего записей: 1329 | Зарегистр. 08-10-2011 | Отправлено: 08:21 17-05-2019 | Исправлено: xerpal, 08:25 17-05-2019
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3

Компьютерный форум Ru.Board » Интернет » Web-программирование » JavaScript (Greasemonkey)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru