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

Mark Jubenville ioncache at gmail.com
Wed Oct 10 09:12:24 PDT 2012


Alternatively if you don't want to do the whole ajax thing, you can do 
something similar just checking the text of the body:

<script>
     var page_check;

     var nMilliseconds = 60*1000; // frequency of server check in 
milliseconds
     var checkServerStatus = function () {
         if ( /Text that you are searching 
for/.test(document.body.innerHTML) ) {
             // simple javascript alert box
             alert("Text you want to display when the search is found");

             // an actual new window/tab
             var text_window=window.open("","","width=200,height=100");
             text_window.document.write("<p>Text you want to display 
when the search is found</p>");
             text_window.focus();

             clearInterval(page_check);
         }
     };
     page_check = setInterval( checkServerStatus, nMilliseconds );
</script>

That doesn't require jQuery either.

I put in examples of opening an actual window or just showing an alert box.

On 2012-10-10 11:40 AM, Mark Jubenville wrote:
> 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

-- 

Mark Jubenville | ioncache at gmail.com

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


More information about the toronto-pm mailing list