473,398 Members | 2,812 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,398 software developers and data experts.

Can you optimize this script?

Background: Our main menu is built using a simple unordered list
containing other ULs. There is a table on a page that holds the subnav.
Because of certain circumstances, I need to build the subnav dynamically
on each page. I wrote this script in about 15 minutes because it was a
"scope-creep" kinda thing. Now that I have a bit of time, for education
reasons, I want to optimize this thing as much as possible.

Notes: DOM is a heaven send :). By my own admission, the variable names
could be a little more descriptive. "nav" is the master navigation.
"subNav" is a table row which holds the sub-navigation. This script works
good enough. But, I'm always interested in the opinions of those more
experienced than I.

Here's a shortened version of the main nav:

<ul id="nav">
<li>
<div>
<a href="/home/newstory.aspx" alt="">Home</a>
</div>
</li>
<li>
<div>
<a href="/about/default.aspx" alt="ABOUT ASBA">About Asba
</a>
</div>
<ul>
<li>
<a href="/about/missionvisionphilosophy.aspx">
Mission/Vision/Philosophy</a>
</li>
<li>
<a href="/about/board.aspx">Board of Directors</a>
</li>
</ul>
</li>
</ul>

Here's the subnav:

<table class="subnav" border="0">
<tr>
<td class="subparent" id="subNavHeader">Benefits</td>
<td width="15" rowspan="2">&nbsp;</td>

</tr>
<tr>
<td class="subbody" id="subNav">

</td>
</tr>
</table>

Here's the script:

function makeSubNav(){
var navs = document.getElementById('nav').getElementsByTagNam e('a');

var subNav = document.getElementById('subNav');
var path = formatPath( document.location.pathname );
var anchor, link, parentNodeName, listToPass, altText;
for(var i = 0; i < navs.length; i++){
anchor = navs[i];
link = formatPath( anchor.pathname );
listToPass = null;
if(path == link){
switch(anchor.parentNode.nodeName.toUpperCase()){
case "LI":
listToPass =
anchor.parentNode.parentNode.parentNode;
break;
case "DIV":
listToPass = anchor.parentNode.parentNode;

break;
}
break;
}
}
try{
altText = listToPass.getElementsByTagName('div')
[0].getElementsByTagName('a')[0].attributes.getNamedItem('alt').value;
}catch(err){
altText = '';
}
subNav.appendChild( createList(listToPass, altText, path) );
}

function formatPath(path){
if(path.charAt(0) != '/') path = '/' + path;
return path.toLowerCase();
}

function createList(ul, altText, currentPage){
document.getElementById('subNavHeader').innerHTML = altText;
var toReturn = document.createElement('ul');
var items = ul.getElementsByTagName('li');
var img, existingLink, existingPath, newItem, newLink, span;
for(var i = 0; i < items.length; i++){
existingLink = items[i].getElementsByTagName('a')[0];
existingPath = formatPath( existingLink.pathname );
newItem = document.createElement('li');
img = new Image();
img.height = 6;
img.width = 10;
img.border = 0;
img.src = "/Common/Images/LinkBullet.gif";
newItem.appendChild( img );
if(existingPath == currentPage){
toReturn.appendChild( document.createElement('br') );
newItem.className = "subcurrent";
span = document.createElement('span');
span.innerHTML = existingLink.innerHTML;
newItem.appendChild( span );
toReturn.appendChild( newItem );
toReturn.appendChild( document.createElement('br') );
}else{
newLink = document.createElement('a');
newLink.href = existingLink.href;
newLink.innerHTML = existingLink.innerHTML;
newItem.appendChild( newLink );
toReturn.appendChild( newItem );
}
}
return toReturn;
}

TIA

--
( )
)\ ) ) ( /(
(()/( ( /( ( ( ( )\())
/(_)))\()))\ ( )\))( ((_)\
(_)) (_))/((_) )\ ) ((_))\ _ ((_)
/ __|| |_ (_) _(_/( (()(_)| |/ /
\__ \| _| | || ' \))/ _` | | ' <
|___/ \__| |_||_||_| \__, | |_|\_\
|___/
Jul 23 '05 #1
10 1273
Chris Martin <ch***@design44.com> wrote in
news:Xn*********************************@140.99.99 .130:
Background: Our main menu is built using a simple unordered list
containing other ULs. There is a table on a page that holds the
subnav. Because of certain circumstances, I need to build the subnav
dynamically on each page. I wrote this script in about 15 minutes
because it was a "scope-creep" kinda thing. Now that I have a bit of
time, for education reasons, I want to optimize this thing as much as
possible.

Notes: DOM is a heaven send :). By my own admission, the variable
names could be a little more descriptive. "nav" is the master
navigation. "subNav" is a table row which holds the sub-navigation.
This script works good enough. But, I'm always interested in the
opinions of those more experienced than I.

Here's a shortened version of the main nav:

<ul id="nav">
<li>
<div>
<a href="/home/newstory.aspx" alt="">Home</a>
</div>
</li>
<li>
<div>
<a href="/about/default.aspx" alt="ABOUT ASBA">About
Asba
</a>
</div>
<ul>
<li>
<a href="/about/missionvisionphilosophy.aspx">
Mission/Vision/Philosophy</a>
</li>
<li>
<a href="/about/board.aspx">Board of Directors</a>
</li>
</ul>
</li>
</ul>

Here's the subnav:

<table class="subnav" border="0">
<tr>
<td class="subparent" id="subNavHeader">Benefits</td>
<td width="15" rowspan="2">&nbsp;</td>

</tr>
<tr>
<td class="subbody" id="subNav">

</td>
</tr>
</table>

Here's the script:

function makeSubNav(){
var navs =
document.getElementById('nav').getElementsByTagNam e('a');

var subNav = document.getElementById('subNav');
var path = formatPath( document.location.pathname );
var anchor, link, parentNodeName, listToPass, altText;
for(var i = 0; i < navs.length; i++){
anchor = navs[i];
link = formatPath( anchor.pathname );
listToPass = null;
if(path == link){
switch(anchor.parentNode.nodeName.toUpperCase()){
case "LI":
listToPass =
anchor.parentNode.parentNode.parentNode;
break;
case "DIV":
listToPass = anchor.parentNode.parentNode;
break;
}
break;
}
}
try{
altText = listToPass.getElementsByTagName('div')
[0].getElementsByTagName('a')[0].attributes.getNamedItem('alt').value;
}catch(err){
altText = '';
}
subNav.appendChild( createList(listToPass, altText, path) );
}

function formatPath(path){
if(path.charAt(0) != '/') path = '/' + path;
return path.toLowerCase();
}

function createList(ul, altText, currentPage){
document.getElementById('subNavHeader').innerHTML = altText;
var toReturn = document.createElement('ul');
var items = ul.getElementsByTagName('li');
var img, existingLink, existingPath, newItem, newLink, span;
for(var i = 0; i < items.length; i++){
existingLink = items[i].getElementsByTagName('a')[0];
existingPath = formatPath( existingLink.pathname );
newItem = document.createElement('li');
img = new Image();
img.height = 6;
img.width = 10;
img.border = 0;
img.src = "/Common/Images/LinkBullet.gif";
newItem.appendChild( img );
if(existingPath == currentPage){
toReturn.appendChild( document.createElement('br') );
newItem.className = "subcurrent";
span = document.createElement('span');
span.innerHTML = existingLink.innerHTML;
newItem.appendChild( span );
toReturn.appendChild( newItem );
toReturn.appendChild( document.createElement('br') );
}else{
newLink = document.createElement('a');
newLink.href = existingLink.href;
newLink.innerHTML = existingLink.innerHTML;
newItem.appendChild( newLink );
toReturn.appendChild( newItem );
}
}
return toReturn;
}

TIA


No Ideas?

--
( )
)\ ) ) ( /(
(()/( ( /( ( ( ( )\())
/(_)))\()))\ ( )\))( ((_)\
(_)) (_))/((_) )\ ) ((_))\ _ ((_)
/ __|| |_ (_) _(_/( (()(_)| |/ /
\__ \| _| | || ' \))/ _` | | ' <
|___/ \__| |_||_||_| \__, | |_|\_\
|___/
Jul 23 '05 #2
StingK wrote:
Chris Martin <ch***@design44.com> wrote in
news:Xn*********************************@140.99.99 .130:
The name of the author of the precursor is sufficient to follow the
discussion, while long attributions make them less legible. Please
configure your UA not to post such attribution novels by default.
<ul id="nav">
<li>
<div>
<a href="/home/newstory.aspx" alt="">Home</a>
Whitespace like spaces and line-breaks are displayed as spaces. In a
standards compliant DOM they count as text nodes. They should not occur
after open tags and before close tags.

An A element does not have an ALT attribute. Why should it, such only
makes sense if the value of that attribute could be used as *alternative*
display, as with images or other objects.
</div>
</li>
<ul id="nav">
<li><div><a href="/home/newstory.aspx">Home</a></div></li>
<li>
<div>
<a href="/about/default.aspx" alt="ABOUT ASBA">About
Asba
</a>
The HTML 4.01 Specification recommends to avoid line-breaks within
A elements.
[...]
Here's the subnav:

<table class="subnav" border="0">
Tables should not serve layout purposes alone, instead they should
only serve the purpose of arranging tabular data and to mark up the
relations between them.
function makeSubNav(){
var navs =
document.getElementById('nav').getElementsByTagNam e('a');
Especially DOM methods should be feature-tested before applied, in
its most simple form:

if (document.getElementById)
{
var navs = document.getElementById('nav');
if (navs.getElementsByTagName
&& (navs = navs.getElementsByTagName('a')))
{
// access navs
}

More sophisticated but requires JavaScript 1.1 or an ECMAScript 2+
language implementation:

var t;
if ((t = typeof document.getElementById) == "function"
|| (t == "object" && document.getElementById))
{
var navs = document.getElementById('nav');
if (((t = typeof navs.getElementsByTagName) == "function"
|| (t == "object" && navs.getElementsByTagName))
&& (navs = navs.getElementsByTagName('a')))
{
// access navs
}

See also <http://pointedears.de/scripts/test/whatami> and
isMethodType() in <http://pointedears.de/scripts/types.js>.
[...]
var path = formatPath( document.location.pathname );
Although possible, at least I don't consider it good style
if a method is called before its definition is known.

formatPath() should be defined *in the source* prior to
makeSubNav(), although it is defined during runtime before
makeSubNav() is called and so calling the former is possible.
var anchor, link, parentNodeName, listToPass, altText;
Those variables should be declared within the "for" loop, so that
if the loop is for some reason not executed, they are not declared.
for(var i = 0; i < navs.length; i++){
It is more efficient to write

for (var i = 0, len = navs.length; i < len; i++)
{
anchor = navs[i];
That variable is indeed useful to prevent further unnecessary look-ups.
link = formatPath( anchor.pathname );
However, that variable is not necessary, see [1]
listToPass = null;
Could be omitted if [2] is used
if(path == link){
[1]

if (path == formatPath(anchor.pathname))
switch(anchor.parentNode.nodeName.toUpperCase()){
case "LI":
listToPass =
anchor.parentNode.parentNode.parentNode;
break;
case "DIV":
listToPass = anchor.parentNode.parentNode;
break;
}
break;
Since `anchor.parentNode' is accessed afterwards, look-ups can be saved
here. toLowerCase() should be preferred over toUpperCase() for performance
reasons (words are for the most part lowercase, and lowercase strings can
be compressed better):

for (...)
{
// ...
var p = anchor.parentNode;
if (p)
{
switch (p.nodeName.toLowerCase())
{
case "li":
listToPass = p.parentNode.parentNode;
break;

case "div":
listToPass = p.parentNode;
break;
}
break;
}
// ...
}
}
try{
altText = listToPass.getElementsByTagName('div')
[0].getElementsByTagName('a')[0].attributes.getNamedItem('alt').value;
altText = listToPass.getElementsByTagName('div')[0]
.getElementsByTagName('a')[0].alt;
}catch(err){
altText = '';
}
Note that try...catch requires an ECMAScript 3 compliant language
implementation.
subNav.appendChild( createList(listToPass, altText, path) );
[2]
subNav.appendChild(createList(listToPass || null, altText, path));
}

function formatPath(path){
if(path.charAt(0) != '/') path = '/' + path;
return path.toLowerCase();
}
Are you sure? The path component of URIs is case-sensitive.
function createList(ul, altText, currentPage){
document.getElementById('subNavHeader').innerHTML = altText;
`innerHTML' is not part of any standard, don't mix standards compliant
references with proprietary ones (at least don't do that without
feature-testing prior). Use either

var o;
if (document.getElementById
&& (o = document.getElementById('subNavHeader'))
&& (typeof o.innerHTML != "undefined"))
{
o.innerHTML = altText;
}

or

var o;
if (document.getElementById
&& (o = document.getElementById('subNavHeader'))
{
var oSpan, oText;
if (o.firstChild
&& o.removeChild
&& o.createTextNode
&& (oText = o.createTextNode(altText)))
{
while (o.firstChild)
{
o.removeChild(o.firstChild);
}

o.appendChild(oText);
}
}

or the latter with the more sophisticated feature-testing method,
see above.
var toReturn = document.createElement('ul');
var items = ul.getElementsByTagName('li');
At least

if (ul)
{
// access ul
}

is necessary here, since `ul' can be `null'.
var img, existingLink, existingPath, newItem, newLink, span;
for(var i = 0; i < items.length; i++){
See above.
existingLink = items[i].getElementsByTagName('a')[0];
existingPath = formatPath( existingLink.pathname );
newItem = document.createElement('li');
img = new Image();
img.height = 6;
img.width = 10;
img.border = 0;
img.src = "/Common/Images/LinkBullet.gif";
if (newItem)
{
newItem.appendChild( img );
if(existingPath == currentPage){
toReturn.appendChild( document.createElement('br') );
Don't. What if document.createElement('br') is for some reason
unsuccessful?
newItem.className = "subcurrent";
span = document.createElement('span');
span.innerHTML = existingLink.innerHTML;
See above.
[...]
}
}
}
return toReturn;
}
Indentation should not exceed 4 spaces. To keep
source code legible, I recommend 2 spaces.
TIA


You are welcome.
No Ideas?


No name? No FAQ?
PointedEars
--
The generation of random numbers is too important
to be left to chance.
-- Robert R. Coveyou, Oak Ridge National Laboratory
Jul 23 '05 #3
In article <11****************@PointedEars.de>, Thomas 'PointedEars'
Lahn <Po*********@web.de> writes
StingK wrote:
Chris Martin <ch***@design44.com> wrote in
news:Xn*********************************@140.99.99 .130:


The name of the author of the precursor is sufficient to follow the
discussion, while long attributions make them less legible. Please
configure your UA not to post such attribution novels by default.

<snip>

The article ID identifies the message. The author's name often does not.

John
--
John Harris
Jul 23 '05 #4
John G Harris wrote:
In article <11****************@PointedEars.de>, Thomas 'PointedEars'
Lahn <Po*********@web.de> writes
StingK wrote:
Chris Martin <ch***@design44.com> wrote in
news:Xn*********************************@140.99.99 .130:


The name of the author of the precursor is sufficient to follow the
discussion, while long attributions make them less legible. Please
configure your UA not to post such attribution novels by default.

<snip>

The article ID identifies the message. The author's name often does not.


The precursor's message ID is the last message ID in the References header
of the followup. In a reasonable archive, at least this header will be
stored to link the postings of the discussion in a thread; a good archive
will provide all references as visible hyperlinks. There is exactly no
need to duplicate that data in the body of the message, also taking into
account that it in fact does not ease retrieval of the information
contained therein, on the contrary.
F'up2 PointedEars
--
For some reason, reading right through the entire quip list seemed a helluva
lot more attractive than doing some FoxPro development... Can't imagine
why! [www.rubberturnip.org.uk]
Jul 23 '05 #5
Thomas 'PointedEars' Lahn wrote:
John G Harris wrote:

In article <11****************@PointedEars.de>, Thomas 'PointedEars'
Lahn <Po*********@web.de> writes
StingK wrote:

Chris Martin <ch***@design44.com> wrote in
news:Xn*********************************@140.9 9.99.130:

The name of the author of the precursor is sufficient to follow the
discussion, while long attributions make them less legible. Please
configure your UA not to post such attribution novels by default.
<snip>

The article ID identifies the message. The author's name often does not.

The precursor's message ID is the last message ID in the References header
of the followup. In a reasonable archive, at least this header will be
stored to link the postings of the discussion in a thread; a good archive
will provide all references as visible hyperlinks. There is exactly no
need to duplicate that data in the body of the message, also taking into
account that it in fact does not ease retrieval of the information
contained therein, on the contrary.


Thats rubbish, and entirely irrelevant. You are assuming that headers
are visible and available to anyone that uses News and that is not true.
Learn the difference, stop babbling about attributions (which you fail
to realize the importance of), and move on.
F'up2 PointedEars


F'up set back where it should be. You are also assuming that the News
software used by people follows and honors the Follow-up header. I know
of one, that when used, is used by ~20% of web users that has neither
the ability to set that Follow-up nor to cross-post.

--
Randy
comp.lang.javascript FAQ - http://jibbering.com/faq
Jul 23 '05 #6
JRS: In article <11****************@PointedEars.de>, dated Sat, 16 Oct
2004 16:58:33, seen in news:comp.lang.javascript, Thomas 'PointedEars'
Lahn <Po*********@web.de> posted :
StingK wrote:
Chris Martin <ch***@design44.com> wrote in
news:Xn*********************************@140.99.99 .130:


The name of the author of the precursor is sufficient to follow the
discussion, while long attributions make them less legible. Please
configure your UA not to post such attribution novels by default.


Ignore the child Lahn.

He wishes to apply standards once considered appropriate in a minor
local hierarchy, while ignoring all other recommendations including
those of the relevant Usefor WIP.

The attribution heading this article is Usefor-compliant, whereas that
of StingK contains acceptable elements incorrectly formatted;

In <Xn*********************************@140.99.99.130 >,
Chris Martin <ch***@design44.com> wrote:

is a correct way to present those elements. However, the date of the
previous article is also generally considered useful. In the case of
Lahn's article, it would have shown that he is once again answering an
ancient article.
Lahn could usefully have pointed out that the Usenet signature
convention is to have no more than four lines.

Lahn's own signatures are not Usenet-convention-compliant; they breach
it in a different manner. Evidently he considers that RFC1855 does not
apply to him.

--
© John Stockton, Surrey, UK. ?@merlyn.demon.co.uk Turnpike v4.00 MIME. ©
Web <URL:http://www.merlyn.demon.co.uk/> - FAQish topics, acronyms, & links.
Proper <= 4-line sig. separator as above, a line exactly "-- " (SonOfRFC1036)
Do not Mail News to me. Before a reply, quote with ">" or "> " (SonOfRFC1036)
Jul 23 '05 #7
In article <Xu********************@comcast.com>, Randy Webb
<Hi************@aol.com> writes
Thomas 'PointedEars' Lahn wrote:


<snip>
F'up2 PointedEars


F'up set back where it should be. You are also assuming that the News
software used by people follows and honors the Follow-up header. I know
of one, that when used, is used by ~20% of web users that has neither
the ability to set that Follow-up nor to cross-post.


Oh, so that's what F'up2 means. I thought it was describing Pointed
Ears.

John
--
John Harris
Jul 23 '05 #8
John G Harris wrote:
In article <Xu********************@comcast.com>, Randy Webb
<Hi************@aol.com> writes
Thomas 'PointedEars' Lahn wrote:
F'up2 PointedEars


F'up set back where it should be.
It should be where it is on-topic which after my comment is certainly no
longer this newsgroup. I am not to blame about this further off-topic
discussion here, Randy; you are.
You are also assuming that the News software used by people follows and
honors the Follow-up header. I know of one, that when used, is used by
~20% of web users that has neither the ability to set that Follow-up nor
to cross-post.


Oh, so that's what F'up2 means. I thought it was describing Pointed
Ears.


FYI: My nickname does not contain a space character.

Followup-To: poster (F'up2 poster; here abbreviated as "F'up2 PointedEars")
means that the author of the message (here: me, thus the abbreviation)
wishes to continue the current discussion, if still necessary, only via
private e-mail (see RFC 1036), in most cases, as here, because further
discussion would be off-topic and thus disturb readers of the newsgroup.

It is a header value honored by all reasonable NetNews user agents but
broken Outlook Express which also sends the message to the newsgroup
if replied to such a message. It is _not_ up to the software of the
reader but up to the software of the poster of the message to *set* it.
People who reply are in most cases allowed by their software to post
to the newsgroup anyway (although that is not very polite, given the
reasons for setting Followup-To: poster above); it is not a must but
merely a suggestion, yet a strong one. It has nothing to do with
cross-posting, although the Followup-To header may be used also with
cross-postings to suggest the appropriate group where followups
(replies) should go to (to be on-topic).

People who use software that is not able to set Followup-To poster or to
post to more than one group should use different software, because their
current software is not compliant with widely accepted Internet and Usenet
standards (the RFC mentioned above, for example); however, I doubt that
such software exists -- even Google Groups allows for crossposting, not
yet for Followup-To: poster or to a newsgroup (which makes Google Groups
not a viable alternative for posting although good for read-only research,
and Google posters often killfiled, i.e. Google postings filtered; however,
they could cut the Newsgroups header to avoid further crosspostings;
however, as to my experience most people who use Google groups have no
clue about Google interconnecting with the world-wide distributed Usenet,
they consider it a Web bulletin board instead).

Those are facts that poor Randy still does not understand although they have
been already explained to him many times before, not only by me. Instead,
he is continuously expressing his unchanged sparkling incompetence in
matters of Usenet by whining about the bad bad people out there who know
how to choose working software, know how to handle that software and know
about the workings of the used communication medium; I suggest to ignore
that.

F'up2 poster set again, please follow. EOD for me here.
PointedEars
--
Auntie Em, hate you, hate Kansas, taking the dog. Dorothy.
Jul 23 '05 #9
Thomas 'PointedEars' Lahn wrote:
John G Harris wrote:

In article <Xu********************@comcast.com>, Randy Webb
<Hi************@aol.com> writes
Thomas 'PointedEars' Lahn wrote:

F'up2 PointedEars

F'up set back where it should be.

It should be where it is on-topic which after my comment is certainly no
longer this newsgroup. I am not to blame about this further off-topic
discussion here, Randy; you are.

Yep. I accept it. I put it back in News: where it originated. The
problem with setting follow-up to you and you alone is two-fold:

1) You can not return the email so there wouldn't be much point in
emailing you to begin with.

2) If it becomes private, then you are limited to two opinions. That
would be mine and yours. Ask in News, Comment in News, get rebuked in
News. Its the way of News.
You are also assuming that the News software used by people follows and
honors the Follow-up header. I know of one, that when used, is used by
~20% of web users that has neither the ability to set that Follow-up nor
to cross-post.
Oh, so that's what F'up2 means. I thought it was describing Pointed
Ears.

FYI: My nickname does not contain a space character.


Either way, his assumption was a correct one.
Followup-To: poster (F'up2 poster; here abbreviated as "F'up2 PointedEars")
means that the author of the message (here: me, thus the abbreviation)
wishes to continue the current discussion, if still necessary, only via
private e-mail (see RFC 1036), in most cases, as here, because further
discussion would be off-topic and thus disturb readers of the newsgroup.
Oh, and this comes from a person who continuosly replies to post that
are over 3 weeks old? Wow. I am impressed.
It is a header value honored by all reasonable NetNews user agents but
broken Outlook Express which also sends the message to the newsgroup
if replied to such a message. It is _not_ up to the software of the
reader but up to the software of the poster of the message to *set* it.
You are assuming, incorrectly, that all News software (other than OE)
allows it or even honors it. They do not. AOL's newsreader being one of
them. And considering the fact that you can *not* use an external reader
when reading News via AOL, it would be kind of hard to set follow-ups,
honor them, or even be allowed to see what they are. It doesn't give you
that option.
People who reply are in most cases allowed by their software to post
to the newsgroup anyway (although that is not very polite, given the
reasons for setting Followup-To: poster above); it is not a must but
merely a suggestion, yet a strong one. It has nothing to do with
cross-posting, although the Followup-To header may be used also with
cross-postings to suggest the appropriate group where followups
(replies) should go to (to be on-topic).
And I think its appropriate in comp.lang.javascript. If you don't like
it, don't reply.
People who use software that is not able to set Followup-To poster or to
post to more than one group should use different software, because their
current software is not compliant with widely accepted Internet and Usenet
standards (the RFC mentioned above, for example); however, I doubt that
such software exists -- even Google Groups allows for crossposting, not
yet for Followup-To: poster or to a newsgroup (which makes Google Groups
not a viable alternative for posting although good for read-only research,
and Google posters often killfiled, i.e. Google postings filtered; however,
they could cut the Newsgroups header to avoid further crosspostings;
however, as to my experience most people who use Google groups have no
clue about Google interconnecting with the world-wide distributed Usenet,
they consider it a Web bulletin board instead).
If you can tell me how to use an external reader when using AOL as the
ISP that doesn't allow it, you might have a point. Otherwise, you are
spinning your wheels, spouting garbage, and generally showing your lack
of intelligence about the web in general. It is not always up to the
user what software they are/aren't allowed to use based on the ISP.

Those are facts that poor Randy still does not understand although they have
been already explained to him many times before, not only by me.
Now, you have done what you normally do. You are babbling nonsense about
whats been explained to me, by someone other than you. Well, sorry to
disappoint you but what you have to say to me has about as much value to
me as a salt block in a rain storm. But to give you the benefit of the
doubt, prove what you are saying by giving reference to News: articles
*under a year old* that prove what you are saying.
Instead, he is continuously expressing his unchanged sparkling incompetence in
matters of Usenet by whining about the bad bad people out there who know
how to choose working software, know how to handle that software and know
about the workings of the used communication medium; I suggest to ignore
that.
If you weren't so ludicrously stupid, you wouldn't be as funny.

F'up2 poster set again, please follow. EOD for me here.


I did, but I also posted it back where *I* wanted it posted. If you
can't handle a public discussion, then bow out.

--
Randy
comp.lang.javascript FAQ - http://jibbering.com/faq
Jul 23 '05 #10
In article <51****************@PointedEars.de>, Thomas 'PointedEars'
Lahn <Po*********@web.de> writes

<snip>
F'up2 poster set again, please follow. EOD for me here.


Once again my eyes auto-expanded this to F***ed up duo, where duo is
presumably referring to a pair of auricular appendages with a
discontinuous outline.

John

PS Sensible people write "Follow up set".
--
John Harris
Jul 23 '05 #11

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

4
by: Munja | last post by:
I have PHP script running complex query and then calculating data for different conditions from received result set. Actually, it's doing the same as if I would make several queries with different...
6
by: Nicolas | last post by:
Hello, I have programmed an application to manage newsletters in PHP. I send the mails using smtp, but when there are more than 500 subscribers and when the mails (in html) are too big, it is...
0
by: Andres Corrada-Emmanuel | last post by:
Hello, Does the optimize flag work on the shebang line of UNIX systems? I've tried to execute a script on a Solaris system with a shebang line of the form: #! /usr/bin/env python -O and it...
0
by: Andreas Falck | last post by:
Hi, I ran the code below on two different versions, 4.0.14 and 4.0.16 respectively, both running RH 7.3 on intel. In version mysql server version 4.0.14 the SELECT privelege suffices for...
4
by: mjuricek | last post by:
I'm having some problems to optimize my stored procedure (select statement with joins) What I'm trying to do is calculate total work. My situation: I have 3 tables I'm using -Input (char...
10
by: Nimit | last post by:
Hi, I wasn't sure which forum this post belongs to, so I've posted it to a couple forums that I thought may be appropriate. In giving me advice, please consider me a beginner. Below is a synopsis...
0
by: Daniel | last post by:
Hi there, I recently came across an interesting option when right clicking on a project (Right click on the project -> properties -> Configuration Properties ->Build -> Optimize) There is an...
9
by: TF | last post by:
Hello all, I made a ASP.NET 2.0 site that shows possible "recipes" for paint colors stored in an access dbase. Basically, 1000 colors are stored with specific RGB values in separate columns. A...
2
by: bsagert | last post by:
I wrote my own feed reader using feedparser.py but it takes about 14 seconds to process 7 feeds (on a windows box), which seems slow on my DSL line. Does anyone see how I can optimize the script...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.