Javascript-форум (https://javascript.ru/forum/)
-   Firefox/Mozilla (https://javascript.ru/forum/css-html-firefox-mizilla/)
-   -   Помощь новичку с простеньким greasemonkey скриптом (https://javascript.ru/forum/css-html-firefox-mizilla/65280-pomoshh-novichku-s-prostenkim-greasemonkey-skriptom.html)

bombino1 09.10.2016 21:37

Помощь новичку с простеньким 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() но ничего не получилось. Спасибо

Aetae 09.10.2016 23:02

// ==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);
Примерно так.

bombino1 09.10.2016 23:34

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

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

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

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

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

bombino1 09.10.2016 23:47

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

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


эти строки забыл добавить в префикс. Спасибоооо

Aetae 10.10.2016 01:15

С интервалом в 10 мс скрипт проверяет наличие переменной(потому что она появляется не сразу, а как подгрузятся нужный скрипт), и как только оная найдена - останавливает проверку(clearinterval) и открывает страничку.

bombino1 11.10.2016 17:46

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");
}

рони 11.10.2016 18:07

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

querySelectorAll

прочитайте пожалуйста там по 10 строк всего

Aetae 11.10.2016 18:17

А ещё что такое вообще свойства и атрибуты.

bombino1 11.10.2016 18:36

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

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

Lemme 11.10.2016 18:49

querySelectorAll


Часовой пояс GMT +3, время: 01:36.