[DOM tip included] [thelist] How can I avoid a hosting disaster and liability

Ben Henick persist1 at io.com
Thu Feb 21 18:08:01 CST 2002


Apologies to those reading this thread for not including parts of the
original message; sorry, you'll have to look it up on the site.

This comes across to me as a situation of, "how do I shop" rather than,
"where do I go?"

Given the nature of your requirements, you may genuinely need to get a
dedicated box through a different provider, a horrifically expensive (and
often unnecessary) evolution.  Lots of ISP's allow you to set up
collocation, and you might well want to talk to ones that are local,
either to you or to your client.

Once you've lined up candidates, google them.  (God, I can't believe I'm
using that as a verb.)

Assuming 'x' is the name of the hosting provider,

x +good +service
x +bad +service
x +uptime
x +downtime

should return a volume of results for comments posted on 'blogs, personal
sites, bulletin boards, and the like.

I would also strongly recommend that you start a new thread to the effect
of "CF/MSSQL host recommendations" so that you can draw the attention of
the folks you need to hear from.

The bank should be able to recommend a transaction provider; it's in their
best interest to see that the needed uptime occurs.

To which I might add, it seems that you've experienced some pretty bad
luck.

To CYA:

1.  Get an uptime guarantee from the hosting provider/collocate.
2.  IANAL, but insist on a contract that explicitly releases you from
    liability for issues not under your DIRECT control.  Practically every
    private ISP I've ever dealt with does this very thing for a vast
    majority (if not all) of their user accounts, regardless of type.

Since this thread appears to touch on matters that have already been
discussed this week, I will visit the tip jar:

<tip type="DOM scripting for IE5/Macintosh" author="Ben Henick">

IE5/Mac has a habit that, like Netscape 4 before it, has been known to
drive designers and developers nuts: it explicitly includes Windows
newlines as part of the markup.  (This might be true of ALL newlines,
though since the Mac is the one platform I don't use for coding or
production, it's hard for me to say for sure.)

If you are attempting to walk through x.childNodes, this can pose a
problem:  those returns are useless to you, but are masquerading as
textNodes.  They also play hob with CSS 'float' attributes, for reasons
that on consideration will be obvious.  The use of document.normalize
fixes the problem in IE6 and Netscape 6, but not in IE5/Mac.  IE5/Win does
not include bare linebreaks in the the DOM tree at all.

Therefore, you'll want to use onload code similar to the following:

// start JS

j = 0;
while (j < document.getElementById("Main").childNodes.length) {
  CurrentObj = document.getElementById("Main").childNodes[j];
  if ((CurrentObj.offsetHeight === void(0)) &&
    (CurrentObj.parentNode == document.getElementById("Main"))) {
    document.getElementById("Main").removeChild(CurrentObj);
  } else {
    j++;
  }
}

// I have seen an assertion by Steven Champeon that IE5/Mac returns null
// for the value of x.childNodes.length, but frankly have not encountered
// this problem.  But on the off chance that he's right, the following
// code might also be used:

CurrentObj = document.getElementById("Main").childNodes[0];
var TempObj;
j = 0;
while (CurrentObj !== void(0)) {
  if ((CurrentObj.offsetHeight === void(0)) &&
    (CurrentObj.parentNode == document.getElementById("Main"))) {
    TempObj = CurrentObj.nextSibling;
    document.getElementById("Main").removeChild(CurrentObj);
    CurrentObj = TempObj;
  } else {
    TempObj = CurrentObj.nextSibling;
    CurrentObj = TempObj;
}

// Of similar interest is the fact that an element to which a class is
// assigned, offsets its innerText when cloned by IE5/Mac.  Therefore,
// when using cloneNode(), you'll want to implement it as follows for the
// benefit of IE5/Mac, assuming that CurrentObj is assigned from source as
// displayed above:

NewObj = CurrentObj.cloneNode(true);
if (NewObj.innerHTML != CurrentObj.innerHTML) {
  NewObj.innerHTML = CurrentObj.innerHTML;
}

// And in any case, it appears that elements need to be set to

  document.getElementById("Main").style.visibility = "hidden";

// or

  document.getElementById("Main").style.display = "none";

// while also being at the top of the body markup, in order for the
// scrollbar associated with its offsetHeight to completely disappear on
// IE5/Mac.  Merely positioning the object offscreen won't do that job.

</tip>


--
Ben Henick
Web Author At-Large              Managing Editor
http://www.io.com/persist1/      http://www.digital-web.com/
persist1 at io.com                  bmh at digital-web.com
--
"Are you pondering what I'm pondering, Pinky?"
"I think so, Brain, but... (snort) no, no, it's too stupid."
"We will disguise ourselves as a cow."
"Oh!" (giggles) "That was it exactly!"






More information about the thelist mailing list