Получить значение текста в Tampermonkey - PullRequest
1 голос
/ 04 июля 2019

Я играю со скриптами Tampermonkey в JS.У меня есть веб-сайт, который показывает местоположение пользователя и часовой пояс в формате UTC.

<span class="optional-wrapper">
   <span class="UTCText"> ==$0
   <!-- react-text: 60 --> 
   " (UTC "
   <!-- /react-text -->
   <!-- react-text: 61 -->
   "+10:00" 
   <!-- /react-text -->
   <!-- react-text: 62 -->
   ") "
   <!-- /react-text -->
   </span>
</span>

Я хочу прочитать часовой пояс UTC (UTC +10: 00) и преобразовать его во время.Я пробовал что-то подобное, но это не работает.Может ли кто-нибудь указать мне правильное направление, где я могу узнать об этом?

function getTimeZone(UTCText){
document.getElementsByClassName(UTCText);
console.log(UTCText)
}

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

1 Ответ

1 голос
/ 04 июля 2019

Чтобы получить текст со страницы static , используйте .textContent, а затем проанализируйте строку, чтобы извлечь нужное значение.
Вот пример:

var tzOffset    = "Not found!";
var tzNode      = document.querySelector (".UTCText");
if (tzNode) {
    let ndTxt   = tzNode.textContent;
    let tzMtch  = ndTxt.match (/(-?\d+:\d+)/);
    if (tzMtch  &&  tzMtch.length > 1) {
        tzOffset = tzMtch[1];
    }
}
console.log ("Found timezone offset: ", tzOffset);
<span class="optional-wrapper">
   <span class="UTCText"> ==$0
   <!-- react-text: 60 -->
   " (UTC "
   <!-- /react-text -->
   <!-- react-text: 61 -->
   "-10:30"
   <!-- /react-text -->
   <!-- react-text: 62 -->
   ") "
   <!-- /react-text -->
   </span>
</span>


Однако , эта страница использует , что означает, что она управляется AJAX.

Для страниц AJAX вам часто приходится использовать методы с поддержкой AJAX, такие как waitForKeyElements.Вот как это выглядит в полном пользовательском скрипте Tampermonkey:

// ==UserScript==
// @name     _Get timezone offset text from a span
// @match    *://YOUR_SERVER.COM/YOUR_PATH/*
// @noframes
// @require  https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @require  https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant    GM_addStyle
// @grant    GM.getValue
// ==/UserScript==
// @grant    none
//- The @grant directives are needed to restore the proper sandbox.
/* global $, waitForKeyElements */
/* eslint-disable no-multi-spaces, curly */

waitForKeyElements (".UTCText", getTZ_Offset);

function getTZ_Offset (jNode) {
    var tzOffset    = "Not found!";
    let ndTxt       = jNode.text ();
    let tzMtch      = ndTxt.match (/(-?\d+:\d+)/);
    if (tzMtch  &&  tzMtch.length > 1) {
        tzOffset    = tzMtch[1];
    }
    console.log ("Found timezone offset: ", tzOffset);
}
...