Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.10.2016, 21:37
Интересующийся
Отправить личное сообщение для bombino1 Посмотреть профиль Найти все сообщения от bombino1
 
Регистрация: 03.04.2016
Сообщений: 27

Помощь новичку с простеньким greasemonkey скриптом
Привет всем! требуется из исходника страницы узнать значения переменных 'id', 'Name', 'ds' (в моем примере - "aaa", "bbb", "ccc"):



<script type="text/javascript">
var chatData__ = {id:'aaa',Name:'bbb',ds:'ccc'};



Затем извлеченные значения переменных суём в URL и открываем получившийся адрес в новой вкладке. "www.mysite.com/script.php?id=aaa&name=bbb&ds=ccc"

Пробовал использовать команды getElementById() getElementsByName() getElementsByTagName() но ничего не получилось. Спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 09.10.2016, 23:02
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,493

// ==UserScript==
// @name        chatData__
// @namespace   w*!**/!*ww.mysite.com
// @include     ht*!**/!*tp://ww*!**/!*w.mysite.com/*
// @version     1
// @grant       GM_openInTab
// @grant       unsafeWindow
// @run-at      document-start
// ==/UserScript==
var interval = setInterval( function(){
  if('chatData__' in unsafeWindow){
    clearInterval(interval);
    let {id,Name,ds} = unsafeWindow.chatData__;
    GM_openInTab(`http://www.mysite.com/script.php?id=${id}&name=${Name}&ds=${ds}`)
  }
}, 10);
Примерно так.
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 09.10.2016, 23:34
Интересующийся
Отправить личное сообщение для bombino1 Посмотреть профиль Найти все сообщения от bombino1
 
Регистрация: 03.04.2016
Сообщений: 27

спасибо за помощь и время!

не удалось почему-то заставить работать. Попробуйте, может проблема на моей стороне. Скрипт чутка переделал по части имен переменных и URL-a

http://pastebin.com/#######

html source: https://www.dropbox.com/s/cx4csksn33...reeam.zip?dl=0

А что делает интервал в 10 миллисекунд и зачем clearinterval, интересно

Последний раз редактировалось bombino1, 10.10.2016 в 00:14.
Ответить с цитированием
  #4 (permalink)  
Старый 09.10.2016, 23:47
Интересующийся
Отправить личное сообщение для bombino1 Посмотреть профиль Найти все сообщения от bombino1
 
Регистрация: 03.04.2016
Сообщений: 27

ой, Друже, все работает!

// @grant GM_openInTab
// @grant unsafeWindow
// @run-at document-start


эти строки забыл добавить в префикс. Спасибоооо
Ответить с цитированием
  #5 (permalink)  
Старый 10.10.2016, 01:15
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,493

С интервалом в 10 мс скрипт проверяет наличие переменной(потому что она появляется не сразу, а как подгрузятся нужный скрипт), и как только оная найдена - останавливает проверку(clearinterval) и открывает страничку.
__________________
29375, 35
Ответить с цитированием
  #6 (permalink)  
Старый 11.10.2016, 17:46
Интересующийся
Отправить личное сообщение для bombino1 Посмотреть профиль Найти все сообщения от bombino1
 
Регистрация: 03.04.2016
Сообщений: 27

Aetae: привет снова! Не проверите ли мой новый скрипт на ошибки, что-то не работает.

Задача поменять все ссылки где есть waitingroom, на мои:

<div class="HLImageContainer" data-url="/waitingroom/Vasya">

поменять на

<div class="HLImageContainer" data-url="/videochat/Vasya?from=wr">

я написал подобный greasemonkey скрипт, на https://regex101.com/ проверил regex формулу замены, работала отлично. У меня подозрение что в скрипте ошибка где-то в строке TagName("a") ведь моя искомая ссыль не а href.

// ==UserScript==
// @name fromWR
// @namespace mysite
// @include http://mysite.com*
// @version 1
// @grant none
// ==/UserScript==
var links = document.getElementsByTagName("a"); //array
var regex = /^(waitingroom\/)(.+)/ig;
for (var i=0,imax=links.length; i<imax; i++) {
links[i].href = links[i].href.replace(regex,"videochat/$2/?from=wr");
}
Ответить с цитированием
  #7 (permalink)  
Старый 11.10.2016, 18:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

bombino1,
Знаете ли вы селекторы?
Селекторы атрибутов

querySelectorAll

прочитайте пожалуйста там по 10 строк всего
Ответить с цитированием
  #8 (permalink)  
Старый 11.10.2016, 18:17
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,493

А ещё что такое вообще свойства и атрибуты.
__________________
29375, 35
Ответить с цитированием
  #9 (permalink)  
Старый 11.10.2016, 18:36
Интересующийся
Отправить личное сообщение для bombino1 Посмотреть профиль Найти все сообщения от bombino1
 
Регистрация: 03.04.2016
Сообщений: 27

var links = document.getElementsByTagName("data-url");
var links = document.getElementsById("data-url");
var links = document.getElementById("data-url");

попробовал, тот же эффект. Шайзе( Ну да ладно, брошу это дело. Про Атрибуты и DOM (который построил Джек) пытался прочесть но ничего не понял.

Последний раз редактировалось bombino1, 11.10.2016 в 18:46.
Ответить с цитированием
  #10 (permalink)  
Старый 11.10.2016, 18:49
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

querySelectorAll
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите со скриптом greasemonkey AlliancePG Javascript под браузер 0 19.03.2016 17:29
Как определить, имеет ли на данный момент вкладка со скриптом фокус (Greasemonkey) sudomac Events/DOM/Window 2 07.08.2014 09:09
Помощь со скриптом JsScroller_slider! kurt2133 Ваши сайты и скрипты 3 05.08.2014 12:47
Помогите со скриптом новичку mjav4ik jQuery 4 15.03.2013 17:28
Помогите новичку со скриптом yujin11 jQuery 0 31.07.2011 15:43