Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik loop tegen een 'fijne' issue aan hier, ik heb in-line javascript staan (html pagina word eerst door applicatie ingevuld waardoor andere mogelijkheden er niet zijn).

ik heb staan
JavaScript:
1
2
3
4
5
6
7
8
function canshow(name) {
    var namelist = new Array("Relevant", "Responsive", "Privileged", "Confidential", "AttorneyReview", "Production", "ToBeDeleted", "Marginalia", "OutsideCounsel", "Remarks", "MarginaliaComment", "PrivilegedReason", "ConfidentialReason");
    if ( namelist.indexOf(name) != -1 ) {
        document.write('</tr><tr class="field-row">');
    } else {
        document.write('<tr class="field-row" height="0px" style="display: none;">');
    }
}


en op het moment zelf
HTML:
1
2
3
        <script language="javascript">
            canshow("${ENTRY}");
        </script>


${ENTRY} word overigens door eerder genoemde app vervangen met een waarde

in FF word dit netjes weergegeven, maar in IE word deze document.write compleet genegeerd, ook al zet ik er een andere text in.
Weet iemand een manier om dit ongeval te strikken?

*edit*
om te verduidelijken, wat ik wil bereiken is dat een table row niet word getoond als ${ENTRY} gelijk is aan een van de opgesomde waardes. Ik kan verder niet veel doen aangezien een stukje code herhaald word en accolades '{' en '}' de applicatie laten crashen als ze niet op een regel staan

[ Voor 12% gewijzigd door Verwijderd op 02-06-2010 15:47 ]


Acties:
  • 0 Henk 'm!

  • Feanathiel
  • Registratie: Juni 2007
  • Niet online

Feanathiel

Cup<Coffee>

/Edit: mijn excuus, ik dacht dat het om de .indexOf() functie ging. Hierbij las ik over het hoofd dat het over de document.write() ging.

/Edit: Bij nader inzien, kijk toch eens naar de implementatie van .indexOf(). Deze functie bestaat niet in Internet Explorer. Deze zul je dan ook zelf moeten implementeren. Dit kan door zowel een prototype-functie aan te maken in het Array object, als door lokaal een for loop aan te maken:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function canshow(name) { 
    var namelist = new Array("Relevant", "Responsive", "Privileged", "Confidential", "AttorneyReview", "Production", "ToBeDeleted", "Marginalia", "OutsideCounsel", "Remarks", "MarginaliaComment", "PrivilegedReason", "ConfidentialReason"); 

    var idx = -1;
    for(var i=0; i<namelist.length; i++) {
        if( namelist[i] == name ) {
            idx = i;
            break;
        }
    }

    if ( idx != -1 ) { 
        alert('gevonden');
    } else { 
        alert('niet gevonden');
    } 
}


Referentie:
- http://www.hunlock.com/bl...Javascript_Arrays#indexOf

[ Voor 161% gewijzigd door Feanathiel op 02-06-2010 16:15 ]


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-09 08:45
welke doctype gebruik je en hoe serveer je het document?

Vervang language="javascript" overigens door type="text/javascript"

[ Voor 76% gewijzigd door Bosmonster op 02-06-2010 16:09 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
om eerlijk te zijn is er geen doctype aanwezig. deze is naar mijn idee lastig te implementeren omdat de html pagina eerst door een applicatie gaat die waardes invult en daarna door IIS word geserveerd. en ondertussen met meerdere andere pagina's word gefuseerd

het vervangend scriptje van Feanathiel werkte in ieder geval wel. Bedankt, had nooit verwacht dat een basisfunctie als dat niet bestond in IE (ben eigenlijk een C# programmeur :P)

[ Voor 7% gewijzigd door Verwijderd op 02-06-2010 16:17 ]


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-09 08:45
/Edit: Bij nader inzien, kijk toch eens naar de implementatie van .indexOf(). Deze functie bestaat niet in Internet Explorer.
indexOf bestaat wel in IE, maar niet voor Arrays :+

[ Voor 7% gewijzigd door Bosmonster op 02-06-2010 16:45 ]


Acties:
  • 0 Henk 'm!

  • Gamebuster
  • Registratie: Juli 2007
  • Laatst online: 01-08 10:05
(jarig!)
IE ondersteund het dynamisch opmaken van tabellen met plain-html niet. Je moet de tags invoegen door HTML elements aan te maken en deze in te voegen met htmlelement.appendChild() ipv. gewoon HTML toe te voegen.

Alternatieven:
-Genereer de gehele tabel met die functie ipv. alleen wat <tr> tags
-Zorg ervoor dat de <tbody> tag aanwezig is tussen <table> en <tr>'s.

[ Voor 4% gewijzigd door Gamebuster op 02-06-2010 16:50 ]

Let op: Mijn post bevat meningen, aannames of onwaarheden


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
zoals ik zei, de vervanging van indexOf deed het hem, het wint misschien geen schoonheidsprijs maar het werkt :+
thx voor het meedenken iig

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Of natuurlijk gewoon toevoegen als prototyped method aan Array:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
if (!Array.prototype.indexOf)
{
    Array.prototype.indexOf = function(searchElement, fromIndex)
    {
        var l = this.length, i = 0;
        if (fromIndex)
        {
            i = fromIndex;
            if (i < 0)
            {
                i += l;
                if (i < 0) i = 0;
            }
        }

        while (i < l)
        {
            if (this[i] === searchElement) return i;
            i++;
        }

        return -1;
    }
}

zie ook Crisp's blog: Crossbrowser Array Generics :)

Een alternatief is werken met een lookup-map:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
function Set()
{
    var set = {}, i = arguments.length;
    while (i--)
        set[arguments[i]] = 1;

    return set;
}

var mySet = Set("Relevant", "Responsive", "Privileged", "Confidential", "AttorneyReview", "Production", "ToBeDeleted", "Marginalia", "OutsideCounsel", "Remarks", "MarginaliaComment", "PrivilegedReason", "ConfidentialReason");

var foo = 'Privileged';
alert(foo in mySet); // true

[ Voor 29% gewijzigd door crisp op 02-06-2010 17:51 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

crisp schreef op woensdag 02 juni 2010 @ 17:47:
Of natuurlijk gewoon toevoegen als prototyped method aan Array:
JavaScript:
1
//snip

zie ook Crisp's blog: Crossbrowser Array Generics :)
...of je gebruikt gewoon MooTools/jQuery.

* NMe runs. :+

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

MooTools doet iig precies hetzelfde: Array extenden als bepaalde methods niet native aanwezig zijn. jQuery is eng :+

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • bindsa
  • Registratie: Juli 2009
  • Niet online
Verwijderd schreef op woensdag 02 juni 2010 @ 16:16:
om eerlijk te zijn is er geen doctype aanwezig. deze is naar mijn idee lastig te implementeren omdat de html pagina eerst door een applicatie gaat die waardes invult en daarna door IIS word geserveerd. en ondertussen met meerdere andere pagina's word gefuseerd
Ik wil niet zeuren, maar is het niet verstandig om hier toch even goed over na te denken. Je zult merken dat er later dingen misgaan als je doctype ontbreekt/fout is (dat weet ik uit eigen ervaring ;)), denk aan lay-out die zich raar gaat gedragen in met name IE. Is het geen idee om na de laatste fusie er een doctype voor te plempen? (Ga dan voor de strict doctypes i.p.v. de transitional, dat scheelt een hoop gedonder met IE, XHTML óf HTML moet je zelf weten, ik zou gaan voor HTML omdat XHTML mijns insziens hier niet voor bedoeld is, maar daar valt over te twisten)

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Gewoon de meest simpele doctype:
HTML:
1
<!doctype html>

:)

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Helaas ligt het implementeren van een doctype niet aan mij, wat ik doe is het aanpassen van templates naar de klant zijn wensen. Voor een doctype neer te zetten zullen de developers echter moeten opdraaien :P
bedankt nogmaals voor het leeswaar, ik ben nog geen held in javascript maar zo pik ik wel wat dingetjes op voor de volgende keer

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op donderdag 03 juni 2010 @ 08:49:
Helaas ligt het implementeren van een doctype niet aan mij, wat ik doe is het aanpassen van templates naar de klant zijn wensen. Voor een doctype neer te zetten zullen de developers echter moeten opdraaien :P
bedankt nogmaals voor het leeswaar, ik ben nog geen held in javascript maar zo pik ik wel wat dingetjes op voor de volgende keer
Je doctype staat bovenaan je templates en is daadwerkelijk afhankelijk van wat jij in je templates zet....dus wat je nu zegt klinkt niet bepaald logisch. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-09 08:45
Verwijderd schreef op donderdag 03 juni 2010 @ 08:49:
Helaas ligt het implementeren van een doctype niet aan mij, wat ik doe is het aanpassen van templates naar de klant zijn wensen. Voor een doctype neer te zetten zullen de developers echter moeten opdraaien :P
:+ Als dat zo zou zijn hier zou ik echt gaan rellen als ik verantwoordelijk was voor de templates.

Zonder controle over de doctype is het onmogelijk fatsoenlijke templates te maken.

[ Voor 9% gewijzigd door Bosmonster op 03-06-2010 11:41 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
tis hier als volgt

Develop maakt standaardproduct
Sales verkoopt toeters en bellen die niet erop zitten
Professional Services zegt dat ik de toeters en bellen erop moet zetten
Ik maak toeters en bellen en moet workarounds verzinnen voor bugs in of IE of het standaardproduct,

De templates ben ik eigenlijk niet verantwoordelijk voor het onderhouden en behouden van hun functionaliteit. Wat ik mag doen is hier en daar een extra knopje of functie bij zetten.

ik kan er wel een doctype bovenin gooien, alleen is dan onduidelijk wat de rest van de template gaan doen (alle 100+ htm files hebben overigens GEEN doctype). Ik weet overigens niet of het bewust is weg gelaten

Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
Verwijderd schreef op donderdag 03 juni 2010 @ 13:10:
tis hier als volgt

Develop maakt standaardproduct
Sales verkoopt toeters en bellen die niet erop zitten
Professional Services zegt dat ik de toeters en bellen erop moet zetten
Ik maak toeters en bellen en moet workarounds verzinnen voor bugs in of IE of het standaardproduct,

De templates ben ik eigenlijk niet verantwoordelijk voor het onderhouden en behouden van hun functionaliteit. Wat ik mag doen is hier en daar een extra knopje of functie bij zetten.

ik kan er wel een doctype bovenin gooien, alleen is dan onduidelijk wat de rest van de template gaan doen (alle 100+ htm files hebben overigens GEEN doctype). Ik weet overigens niet of het bewust is weg gelaten
Het ontbreken van die doctypes zou wel eens heel goed de oorzaak kunnen zijn dat er uberhaupt workarounds voor IE verzonnen moeten worden. Ik zou daar dus mee kappen, en in plaats daarvan gewoon goeie doctypes gaan gebruiken.
Maar wat moet je in hemelsnaam met honderden HTML-files? Zijn dat templates of werk je á la 1998 met statische pagina's?

[ Voor 3% gewijzigd door mcDavid op 04-06-2010 10:39 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De pagina's zijn wel allemaal dynamisch, maar de exe die ze oppakt heeft voor elke pagina een andere routine. er zijn ook een paar pagina's met framesets Heb net even een mapje erbij gepakt en tzijn maar 65 html files, alsnog aardig wat maar wel minder

Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
Zijn dat dan ook complete pagina's of zijn het sniplets die samengevoegd worden in een template?
In dat laatste geval hoeft er natuurlijk niet in ieder bestand een doctype te staan, als er maar een doctype staat in de output die uiteindelijk naar de browser gestuurd wordt.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat varieert eigenlijk per pagina, de resultatenlijst is geloof ik 3 frames en een documentweergave is 1 pagina
Pagina: 1