Jeg tror, jeg vil pege dig en helt anden og mere robust vej =)
For det første virker det ikke så app-agtigt eller 'robust', hvis brugeren taster 'Back' efter sideskiftet og kommer tilbage til forrige side. Det ville være bedre at bruge
relace metoden:
var strQuery = "?var1=abc&var2=def&var3=ghi";
window.location.relace("side.html" + strQuery);
Så byttes browserdokumentet ud med det nye som sædvanligt, men i historikken
erstattes det gamle med det nye dokument. Det gamle dokument eksisterer altså ikke længere i IE's history, hvorfor man heller ikke kan navigere tilbage til det.
Dog har IE en øvre grænse for URL-længden på lige godt 2.000 tegn (protokol + sti + filnavn + query-string). Den banker du hurtigt issen imod med alle de fine data, så overvej at gemme data i Delphi i stedet.
Da der ofte er problemer med at udveksle mere komplekse datatyper mellem forskellige sprog, kan du gemme dine data i et object - som du så
serialiserer til en
JSON-streng, inden du sender den til Delphi:
var sharedData = {};
function createRegion(strRegion, obj) {
if (!sharedData[strRegion]) sharedData[strRegion] = obj;
}
function addData(strRegion, strKey, val) {
if (!sharedData[strRegion]) return false;
if (strKey) sharedData[strRegion][strKey] = val;
else sharedData[strRegion].push(val);
}
function loadNewDoc(strPath) {
var strJsonData = JSON.stringify(sharedData);
DELPHI.storeDataFromBrowser(strJsonData);
window.location.relace(strPath);
}
// Eksempel på brug:
createRegion("navne", []);
addData("navne", null, "Jens,Buldergade 3,0007,Bulderby,Dannevang");
addData("navne", null, "Ole,Hjemgade 1,1111,Hjemby,Dannevang");
createRegion("diverseParams", {});
addData("diverseParams", "foo", "bar");
addData("diverseParams", "baz", "foobar");
addData("diverseParams", "myArray", ["en", "to", 3, "fire"]);
loadNewDoc("side.html");
Så kan næste dokument hente de gemte data fra Delphi:
var strJsonData = DELPHI.getStoredDataFromBrowser();
var sharedData = JSON.parse(strJsonData);
Med de gemte data vil objektet
sharedData i det nye dokument se sådan ud:
var sharedData = {
"navne": [
"Jens,Buldergade 3,0007,Bulderby,Dannevang",
"Ole,Hjemgade 1,1111,Hjemby,Dannevang"
],
"diverseParams": {
"foo": "bar",
"baz": "foobar",
"myArray": ["en", "to", 3, "fire"]
}
};
- og du kan kalde dem med:
alert(sharedData.navne[1]);
alert(sharedData.diverseParams.foo);
alert(sharedData.diverseParams.myArray[3]);