Laat ik maar het hele verhaal vertellen:
Ik ben bezig met het bouwen van een soort CMS-systeem voor IE6. Nou heb ik een pagina met daarin knoppen waar commando's aan hangen zoals bold, italic enz. In die pagina is een Iframe, waarin ik een pagina ga laden die aangepast kan worden, die dus contentEditable is. Het Iframe heeft de name "editor".
Normaal gesproken zou het commando voor bold iets zijn als:
editor.document.execCommand('bold');
Maar, ik wil ook framesets kunnen laden in het Iframe "editor."
Stel, ik heb een simpele frameset, en binnen die frameset is een frame met de naam "mainFrame". mainFrame bevat een pagina die ik kan aanpassen; die contentEditable is.
Zou ik nu het bold commando willen uitvoeren op mainFrame, dan wordt dat:
editor.mainFrame.document.execCommand('bold');
Maar in mainFrame zou nog een 2e frameSet kunnen zitten:
editor.mainFrame.tweedeFrame.document.execCommand('bold');
Ok... ik weet de namen van de frames; ik weet dus dat ik een frame genaamd "mainFrame" en een frame genaamd "tweedeFrame" heb. Deze 2 namen heb ik opgeslagen in variablen: dus frameA = "mainFrame" en frameB = "tweedeFrame".
Het command voor het maken van vette tekst wordt nu:
editor[frameA][frameB].document.execCommand('bold');
Maar, het kan dus voorkomen dat er geen frameset is in het Iframe editor. Het kan ook voorkomen dat het frameset 3 niveaus diep is. Daarm dacht ik het probleem op te lossen door 1 variable te maken (targetPath):
bijvoorbeeld:
JavaScript:
1
2
3
4
5
6
7
8
9
10
| if (editor bevat geen frames) {
targetPath = "";
} else if (editor bevat 1 frame) {
targetPath = frameA;
} else if (editor bevat 2 frames) {
targetPath = frameA + "." + frameB;
} else if (editor bevat 3 frames) {
targetPath = frameA + "." + frameB + "." + frameC;
}
editor[targetPath].document.execCommand('bold'); |
Maar, deze syntax werkt dus niet...
Wat zou het wel moeten zijn?
[
Voor 33% gewijzigd door
Verwijderd op 07-03-2004 16:30
]