[Greasemonkey] Bug: User script doesn't always execute in GM 0.5
John Plsek
gm at plsek.id.au
Sun Aug 7 14:42:36 EDT 2005
Michael Kraft wrote:
>I'm using Firefox 1.0.6 under Windows XP SP2.
>
>I wrote a script that will keep clicking on a button or a link depending on
>which is on the page at the time. I use it to automate playing
>KingdomOfLoathing. The script works great in GM 0.3.5, but haphazzardly in GM
>0.5. In 0.5 sometimes it works and sometimes it does not.
>
>The strange thing is if I put in an alert() call to spit out something at the
>beginning of the script that won't even execute even though the script is set
>to execute on that page. Yet if I put the same alert() call at the end of the
>script not only will the alert popup, but the script will execute correctly
>every single time.
>
>Any ideas why this is happening?
>
>Here is the script:
>
>// ==UserScript==
>// @name Kingdom of Loathing auto adventure
>// @namespace http://mywebsite.com/myscripts
>// @description Automatically repeats adventuring in Kingdom of Loathing
>// @include http://*.kingdomofloathing.com/fight.php
>// @include http://*.kingdomofloathing.com/adventure.php
>// ==/UserScript==
>
>(function() {
> if (typeof(document.attack) != 'undefined')
> document.attack.submit();
> else {
> var xpath = '//a/text()[contains(., "Adventure again")]/..';
> var theLink = document.evaluate(xpath, document, null,
> XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
> linkElement = theLink.snapshotItem(0);
> if (linkElement != null) {
> actualMessage = linkElement.getAttribute("href");
> document.location = actualMessage;
> }
> }
>})();
>
>_______________________________________________
>Greasemonkey mailing list
>Greasemonkey at mozdev.org
>http://mozdev.org/mailman/listinfo/greasemonkey
>
>
>
>
Correct me if I'm wrong, but couldn't you achieve the same result for
the document.evaluate by
var xpath='//a[contains(text(), "Adventure again")]';
var theLink=document.evaluate(xpath, document, null,
XPathResult.SINGLE_UNORDERED_NODE_TYPE, null);
var linkElement=theLink.singleNodeValue;
however, I can't help with the problem, sorry - I didn't think "alert"
worked at all in GM!
John
More information about the Greasemonkey
mailing list