Изменение HTML с помощью Greasemonkey - PullRequest
5 голосов
/ 14 июля 2011

Я искал способ изменить HTML на веб-сайте, моя главная проблема в том, что у него нет тега id, который я мог бы использовать для его извлечения и изменения с помощью Greasemonkey JavaScript.

извините, я пропустил эту часть.Я регистрирую текущего победителя на сервере и пытаюсь использовать JavaScript через Greasemonkey, чтобы показать время последнего выигрыша на игровом сайте.

Ниже приведена часть исходного кода, в приведенном ниже примере я хотел бы добавитьтекущее время около Raiton между тегами <b>.

<html>
<head>

Most Recent Winner: <b>Raiton</b><br>
Entry Cost: <font color=22AA22><b>11000</b></font> (resets at Dayroll)<br>

Entry costs go up in <font color=2222AA><b>11</b></font> entries to <font color=22AA22><b>22000</b></font> Ryo<br>
Number of plays today: <font color=AA2222><b>0</b></font><br>


</body>
</html>

Ответы [ 6 ]

4 голосов
/ 14 июля 2011

Пока что я не видел ни одного ответа, который бы просто отвечал на вопрос. Попробуйте это:

var elts = document.getElementsByTagName('b'),
    i = elts.length,
    elt,
    text;

while (i--)
{
    elt = elts[i];
    text = elt.textContent;
    if (text === 'Raiton')
    {
        elt.textContent = text + ' ' + new Date();
        break;
    }
}

Демо: http://jsfiddle.net/mattball/Nvwmd/

1 голос
/ 19 января 2014

Следуйте этой теме: MozillaZine: Простая замена текста с Greasemonkey

http://forums.mozillazine.org/viewtopic.php?f=19&t=907475

Схема следующая:

document.body.innerHTML= document.body.innerHTML.replace(/original/g,"new");

Вам необходимо экранировать специальные символыкак / и " с символом \.

1 голос
/ 14 июля 2011

Введите jQuery в ваш GM-скрипт (вы будете рады позже).

Добавьте эту строку в блок метаданных :

// @require http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js

Затем этот скриптбудет делать то, что вы хотите:

var bElem = $ ("b:contains('Raiton')");
bElem.text (bElem.text() + new Date() )


См. демонстрацию на jsFiddle.

1 голос
/ 14 июля 2011

Оберните текст, который вы хотите изменить, в тег <div>, затем найдите объект div по его идентификатору. Затем измените элемент innerHTML объекта.

HTML:

<div id='some_id'>A value</div>

JavaScript:

var my_div = document.getElementById('some_id')
my_div.innerHTML = 'Some other value'
0 голосов
/ 14 июля 2011

Вы можете создать элемент, чтобы использовать его для обновления части вашего кода:

Также, пожалуйста, Google для html5, вы не используете его условия;)

<html>
<head>

Most Recent Winner: <b>Raiton</b><span id="time_handler">00:00</span><br> <!-- HTML5!? <br /> -->
Entry Cost: <font color=22AA22><b>11000</b></font> (resets at Dayroll)<br>

Entry costs go up in <font color=2222AA><b>11</b></font> entries to <font color=22AA22><b>22000</b></font> Ryo<br>
Number of plays today: <font color=AA2222><b>0</b></font><br>


</body>
</html>

Ив JavaScript:

document.getElementById('time_handler').innerHTML = '11:23';
0 голосов
/ 14 июля 2011

Javascript работает лучше всего, когда разметка написана таким образом, что обеспечивает «хуки» для нее.Поскольку у вас действительно есть свободно плавающий текст, нет хорошего способа определить место, куда вы хотите вставить текст.

Если вы контролируете источник, кажется, что было бы неплохо добавить несколько <p> тегов и т. Д. С идентификаторами и классами, чтобы облегчить вашу жизнь.

...