Hmm...
It appears that you are simply trying to pass data from one page to another client-side.
As you have discovered, there are significant limitations to this technique. Length of the querystring is one. Another is that you end up exposing the workings of your pages a bit through the Address field of the browser. The latter also opens your application up to mischief through user-manipulation of the Address field.
Cookies are one way to handle this. To some extent this might get you some cross-browser compatability. It also means you have to play around with URI-encoded strings and such.
But since you are using VBScript it looks like you have accepted the idea of limiting your clients to later versions of IE anyhow. Have you considered using IE's Persistence behaviors?
Persistence lets you have 64K to 512K (depending on context) saved per page. The maximum for any domain is something like 8 to 10 times this amount.
Here is an example that uses one page called "form.htm" and another called "showme.htm" where the first has an HTML form that "submits" to the second page:
form.htm
Code:
<html>
<head>
<style>
.pst {behavior: url(#default#userdata); display: none}
</style>
<script language=VBScript>
Sub btnSubmit_onclick()
divPst.setAttribute "NameValue", frmStuff.txtName.value
divPst.setAttribute "StoryValue", frmStuff.txtStory.value
divPst.save "frmStuffData"
window.navigate "showme.htm"
End Sub
Sub window_onload()
frmStuff.txtName.focus
End Sub
</script>
</head>
<body>
<div id=divPst class=pst></div>
<form id=frmStuff>
<table border=0>
<tr>
<td>Your name:</td>
<td><input type=text id=txtName size=20 maxlength=20></td>
</tr>
<tr>
<td>Your story:</td>
<td><textarea id=txtStory cols=50 rows=8></textarea></td>
</tr>
<tr>
<td> </td>
<td><input type=button id=btnSubmit value=Submit></td>
</tr>
</table>
</form>
</body>
</html>
showme.htm
Code:
<html>
<head>
<style>
.pst {behavior: url(#default#userdata); display: none}
</style>
<script language=VBScript>
Sub btnShowMe_onclick()
divPst.load "frmStuffData"
MsgBox divPst.getAttribute("NameValue") & vbCrLf _
& divPst.getAttribute("StoryValue")
End Sub
</script>
</head>
<body>
<div id=divPst class=pst></div>
<input type=button id=btnShowMe value="Show Me">
</body>
</html>
Note that [tt]divPst[/tt] is just a convenient element I used to implement the UserData Persistence behavior on. You can pass string, numeric, and boolean data this way. I suspect that arrays and objects can't be passed like this though based upon my reading of the documentation. You'd need to serialize these items yourself first, for example by doing a Join( ) on a string array and passing the resulting value - and then Split( )ting out the array elements on the receiving side.
This is a simple example, but you can find out a lot more about Persistence in the
MSDN Library.