[tpm] [OT] Javascript to watch for certain KW from a web page

Mark Jubenville ioncache at gmail.com
Wed Oct 10 08:40:48 PDT 2012


I'd use setInerval instead of setTimeout though:

var page_check;

var nMilliseconds = 60*1000; // frequency of server check in milliseconds
var checkServerStatus = function () {
   $.ajax({ url: "/path/to/your/log/file/script" }).done(function
(jqXHR, textStatus) {
     if (/a regexp matching text in your log 
file/.test(jqXHR.responseText)){
       $.facybox("The text you wish the user to see in the popup 
dialogue.");
       clearInterval(page_check);
     }
   });
};
page_check = setInterval( checkServerStatus, nMilliseconds );



On 2012-10-10 11:27 AM, Antonio Sun wrote:
> Thanks a lot Shaun.
>
> That sure will pave my way to the right direction.
> I'll start playing.
>
> Thanks everyone!
>
> On Wed, Oct 10, 2012 at 10:27 AM, Shaun Fryer <sfryer at sourcery.ca 
> <mailto:sfryer at sourcery.ca>> wrote:
>
>     Hi Antonio,
>
>     That makes sense. Unfortunately it's a little beyond the scope of a
>     simple email to provide a complete solution for your situation.
>     However, you might try something like the following.
>
>     You'll need two things. #1. an ajax function of some kind. Given that
>     you aren't interested in learning JS, I'd recommend using a
>     cross-browser abstraction library which has an ajax method, such as
>     jQuery. #2. You'll need a popup dialogue of some kind. There are
>     plenty to choose from. For the purposes of providing an example, I've
>     [arbitrarily] chosen the facybox jQuery plugin. I have no direct
>     experience with it, but the API seems simple enough, so it should work
>     fine.
>
>     Add a script tag including the jQuery library, followed by one for the
>     plugin for your popup ( http://bitbonsai.com/facybox/ ). Now in a
>     separate script tag below this, add code similar to that below
>     (modified accordingly).
>
>     var nMilliseconds = 60*1000; // frequency of server check in
>     milliseconds
>     var checkServerStatus = function () {
>       $.ajax({ url: "/path/to/your/log/file/script" }).done(function
>     (jqXHR, textStatus) {
>         if (/a regexp matching text in your log
>     file/.test(jqXHR.responseText))
>           $.facybox("The text you wish the user to see in the popup
>     dialogue.");
>         else setTimeout( checkServerStatus, nMilliseconds );
>       });
>     };
>     setTimeout( checkServerStatus, nMilliseconds );
>
>     The above is just pseudo-code, but it *should* work with very little
>     modification, assuming you're using the indicated JS libraries.
>
>     Hope this helps.
>     --
>     Shaun Fryer
>     ----------------------------------------------------------
>     perl -e 'print chr for map{$_+=22}($ARGV[0])=~/(\d\d)/g' \
>             52959394107588899482799210587992861082757785799222
>     ----------------------------------------------------------
>
>
>     On Wed, Oct 10, 2012 at 9:51 AM, Antonio Sun
>     <antoniosun at lavabit.com <mailto:antoniosun at lavabit.com>> wrote:
>     > Hi, thanks a lot for your offer Shaun.
>     >
>     > That was actually what I thought the solution to be. Now let's
>     forget what I
>     > said and focus on what I need to accomplish.
>     >
>     > Yes, I totally control the page content. The situation is,
>     >
>     > I am designing a web portal that can launch back-end server side
>     processes.
>     > The problem is that the process can finish in seconds, or it
>     might need
>     > hours to finish, depending how much work the process has. So my
>     design is to
>     > spawn a sub process, and capture all its outputs to a log text
>     file, then
>     > return immediately to the user, in a web notice page saying,
>     your job is
>     > queued; here is the log url; please check manually if is
>     finished or not.
>     >
>     > But my all my fellow coworkers said they don't want to check
>     themselves.
>     > Instead, they want my web portal to check for them. I couldn't
>     think of any
>     > solution from the server side to capture the end of the sub
>     process, then
>     > informed the already submitted web notice page. Hence, I'm
>     turning to the
>     > javascript front-end for solutions. Because I have zero knowledge of
>     > Javascript, it might not be feasible at all. But I know the best
>     solution is
>     > that if I can have a desktop notification mechanism just like
>     gmail does,
>     > that should solve the problem, because my sub process control
>     task does know
>     > when the sub process ends, and write a specific ending tag to
>     the end of the
>     > log file, which is what I was planning to watch/search for.
>     Every page of my
>     > portal does include a standard master template (except the log
>     text file),
>     > so if I can send a signal at the end of my sub process and
>     capture that by
>     > the master template, then pop up a javascript window, that will
>     do as well.
>     >
>     > Sorry for the lengthy gibberish, hope that you can figure
>     something out from
>     > it.
>     >
>     > Thanks
>     >
>     > On Wed, Oct 10, 2012 at 3:01 AM, Shaun Fryer <sfryer at sourcery.ca
>     <mailto:sfryer at sourcery.ca>> wrote:
>     >>
>     >> Hi Antonio,
>     >>
>     >> I might be able to help you, but first I need to know a bit more
>     >> detail about what you're trying to do. When you say watch for
>     certain
>     >> keywords from a webpage, what do you mean exactly? If you mean
>     >> searching through a static html document looking for a give word or
>     >> words, that's fairly trivial. However, if you can add javascript to
>     >> the page in question, then you probably control the page, and
>     >> therefore should already know it's content. So question is, why
>     would
>     >> you need front-end code in JavaScript to do it? If you mean
>     doing an
>     >> HTTP request from within a web-page, or even a Cross Origin
>     request,
>     >> in order to receive info from a 3rd-party website, then things
>     could
>     >> become considerably more complicated.
>     >>
>     >> Cheers,
>     >> --
>     >> Shaun Fryer
>     >> ----------------------------------------------------------
>     >> perl -e 'print chr for map{$_+=22}($ARGV[0])=~/(\d\d)/g' \
>     >> 52959394107588899482799210587992861082757785799222
>     >> ----------------------------------------------------------
>     >>
>     >>
>     >> On Tue, Oct 9, 2012 at 5:48 PM, Antonio Sun
>     <antoniosun at lavabit.com <mailto:antoniosun at lavabit.com>>
>     >> wrote:
>     >> > Hi,
>     >> >
>     >> > I know it's kind of OT, but since we have a lot of web
>     experts here, let
>     >> > me
>     >> > try my luck here first.
>     >> >
>     >> > I have zero knowledge of Javascript, I'm wondering if you
>     could give me
>     >> > a
>     >> > big favor to show me how to watch for certain keyword from a
>     web page
>     >> > using
>     >> > Javascript.
>     >> >
>     >> > Basically, I have a slow updating web page, and I need a
>     client side
>     >> > Javascript to watch for a specific keyword in that page and
>     pop up an
>     >> > window
>     >> > if the keyword is found.
>     >> >
>     >> > As I have zero knowledge of Javascript, I hope that your
>     answer is as
>     >> > complete as possible.
>     >> >
>     >> > Thanks a lot in advance
>     >> >
>     >> > Antonio
>     >> >
>     >> >
>     >> > _______________________________________________
>     >> > toronto-pm mailing list
>     >> > toronto-pm at pm.org <mailto:toronto-pm at pm.org>
>     >> > http://mail.pm.org/mailman/listinfo/toronto-pm
>     >> >
>     >
>     >
>
>
>
>
> _______________________________________________
> toronto-pm mailing list
> toronto-pm at pm.org
> http://mail.pm.org/mailman/listinfo/toronto-pm

-- 

Mark Jubenville | ioncache at gmail.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/toronto-pm/attachments/20121010/421b9391/attachment-0001.html>


More information about the toronto-pm mailing list