[asp.net] Browserdetectie & rendering moderne browsers

Pagina: 1
Acties:

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 19:04
Asp.net heeft ondersteuning om automatisch browsers te detecteren. In het geval van bijvoorbeeld Firefox levert dat op dat de browser niet herkend wordt en dat vervolgens de html gerenderd wordt als html 3.2 compliant.

Nou zijn daar oplossingen voor zoals browsercaps. Echter, er is in standaard ondersteuning aanwezig om browsers als IE5 te laten parsen. Dat werkt als volgt:

code:
1
2
3
        <clientTarget>
            <add alias="ie5" useragent="" />
        </clientTarget>


Bij useragent moet dan de useragent van de gewenste browser ingevoerd worden. Om dit te doen voor alle browsers die je wilt parsen volgens IE5 standaarden gaat nogal wat ver.

Vandaar de vraag: is er iemand die een snellere methode hiervoor weet?

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 22-04 22:07

Bosmonster

*zucht*

Ja, gewoon html maken die werkt onder alle browsers?

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 19:04
Bosmonster schreef op dinsdag 29 november 2005 @ 11:10:
Ja, gewoon html maken die werkt onder alle browsers?
B)

Ehm ja, dat doe ik. Maar bijvoorbeeld een <asp:Image> wordt door asp.net geparst met een border attribute. Daar kun je niets aan doen. Die browsercaps heb ik geïmplementeerd maar hij blijf dat border attribuut parsen. Op internet vind je daar ook geen oplossing voor.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:11

gorgi_19

Kruimeltjes zijn weer op :9

The downside to checking the type of the passed HtmlTextWriter is that virtually all non-Microsoft browsers, including Netscape versions that do support CSS, pass Html32TextWriter to the Render method. So even a Netscape 6 browser would receive HTML 3.2, even though it supports CSS perfectly. The only way to get around this is by changing machine.config to add:
tagwriter=System.Web.UI.HtmlTextWriter

to each browser that supports CSS. This is risky though, because this may not only impact CSS support. So test if your application still works properly after changing machine.config.
Werkt ook goed als je dat in je web.config doet ipv machine.config :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 19:04
gorgi_19 schreef op dinsdag 29 november 2005 @ 11:16:
Werkt ook goed als je dat in je web.config doet ipv machine.config :)
Yep, ik heb nu web.config aangepast en de browser ondersteuning voor Opera, Firefox, Safari en Konqueror toegevoegd met browserCaps.

Het border element blijft echter geparst worden, ook al staat die niet in de source :'(. Dit geldt trouwens ook voor Internet Explorer.

  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

Dennis schreef op dinsdag 29 november 2005 @ 11:21:
Het border element blijft echter geparst worden, ook al staat die niet in de source :'(. Dit geldt trouwens ook voor Internet Explorer.
Lijkt me dus niet aan de browsercaps te liggen :) over welke ASP.NET versie hebben we het hier? Als het over 2.0 gaat, heb je niet toevallig een skin in je app staan die alle image controls een border attribuut geeft? Ik noem maar iets :)

Certified smart block developer op de agile darkchain stack. PM voor info.


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 19:04
Gunp01nt schreef op dinsdag 29 november 2005 @ 11:26:
Lijkt me dus niet aan de browsercaps te liggen :) over welke ASP.NET versie hebben we het hier? Als het over 2.0 gaat, heb je niet toevallig een skin in je app staan die alle image controls een border attribuut geeft? Ik noem maar iets :)
Goed dat je het vraagt :). Ik gebruik nog asp.net 1.0. Nou wordt een pagina geparst door een HtmlTextWriter. Ik heb al geprobeerd hier een klasse omheen te schrijven maar het is niet toegestaan om classes uit andere assemblies te gebruiken behalve System.Web. Geen optie dus.

  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

Dennis schreef op dinsdag 29 november 2005 @ 11:31:
[...]

Goed dat je het vraagt :). Ik gebruik nog asp.net 1.0. Nou wordt een pagina geparst door een HtmlTextWriter. Ik heb al geprobeerd hier een klasse omheen te schrijven maar het is niet toegestaan om classes uit andere assemblies te gebruiken behalve System.Web. Geen optie dus.
Is er een specifieke reden waarom je 1.0 gebruikt en geen 1.1 (of was het een typfoutje :P)? Ik heb zelf nooit met 1.0 gewerkt dus ik weet niet precies wat de verschillen zijn, maar ik kan me nog wel herinneren dat er heel veel klachten waren over de HTML output van 1.0 en dat hier in 1.1 wat aan gedaan is.
Als je overschakelt naar 1.1 zou je code voor het overgrote deel moeten blijven werken.

edit:
\/\/ ah, never mind then :)


Heb het maar even zelf geprobeerd en er wordt idd altijd een border="0" attribute meegerenderd. Ik las in de gauwigheid op google dat dit wordt weggelaten als je XHTML compliance afdwingt. Maar is het verder echt een probleem, ivm. styling ofzo?

Je zou handmatig deze attribute kunnen zetten naar de gewenste waarde, of in code de Attributes collectie van de control bewerken en de attribute handmatig verwijderen.
Ik zou er zelf ook niet blij mee zijn om het zo te doen, maar het is een oplossing.

[ Voor 26% gewijzigd door Not Pingu op 29-11-2005 12:06 ]

Certified smart block developer op de agile darkchain stack. PM voor info.


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 19:04
Het is inderdaad 1.1.Typfoutje dus ja :P.
Pagina: 1