Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Changing HTML With Greasemonkey

I've been searching for a way to change HTML on a website my main problem being it does not have an id tag that I can use to pull it out and change it, using Greasemonkey JavaScript.

sorry I left that part out. I am logging the current winner on a server and trying to use JavaScript via Greasemonkey to show the last winning time on the game site.

Below is part of the source, in the example below I'd want to add the current time beside Raiton between the <b> tags.

<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>
like image 394
winsock Avatar asked Jul 13 '11 21:07

winsock


4 Answers

So far, I haven't seen any answers that just answer the question. Try this:

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

Demo: http://jsfiddle.net/mattball/Nvwmd/

like image 185
Matt Ball Avatar answered Oct 06 '22 10:10

Matt Ball


Follow this thread: MozillaZine: Simple Text replacement with Greasemonkey

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

The scheme is the following:

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

You need to escape especial characters like / and " with the \ symbol.

like image 24
Smeterlink Avatar answered Oct 06 '22 11:10

Smeterlink


Wrap the text you want to change in a <div> tag, then find the div object via it's id. Then change the innerHTML member of the object.

HTML:

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

JavaScript:

var my_div = document.getElementById('some_id')
my_div.innerHTML = 'Some other value'
like image 1
Barry Fruitman Avatar answered Oct 06 '22 10:10

Barry Fruitman


Introduce jQuery to your GM script (you'll be glad later).

Add this line to the metadata block:

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

Then this Script will do what you want:

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


See the demo at jsFiddle.

like image 1
Brock Adams Avatar answered Oct 06 '22 09:10

Brock Adams