15. december 2004 - 10:21Der er
22 kommentarer og 2 løsninger
finde billeder i htmlkode og sætte højde bredde
Jeg har brug for at kunne gennemløbe noget htmlkode og finde alle billeder. Derefter skal jeg finde højde/bredde på billederne (som ikke er defineret i htmlkoden) for så at indsætte højde/bredde i selve img tagget på de enkelte billeder....hmmmm lidt tricky eller hvad??
Gennemløb hvert element på siden, tjek om typen er img. Aflæs clientHeight og clientWidth på billedet og indsæt attributterne width og height på billedet.
Det virker dog først efter billederne er hentet og vises på skærmen i deres rigtige størrelse
nielsbrinch>> det kan desværre kun lade sig gøre hvis det er server-kontroller. Almindelig html bliver compilet til en LiteralControl, og så skal man til at bruge RegEx til at finde frem til selve <img>'taggene.
Medmindre det er xhmtl så kan du smide det ind i et XmlDocument men så skal du sørge for det er wellfomed. Hvis du har fysisk adgang til selve billederne kan du åbne dem og læse høje og bredde inde i selve filen. Men ved ik om du har adgang til selve billedet?
cyberfessor, uanset hvad server-delen gør ved kontrollerne inden det bliver sendt ud til klienten, så vil det være almindelige <img>-tags som klientens browser ser. Det er det eneste den forstår. Og det er netop i klientens browser et javascript kører.
Der er derfor jeg skriver at "Det virker dog først efter billederne er hentet og vises på skærmen i deres rigtige størrelse". Jeg kan godt se jeg ikke har gjort det særligt klart.
der er forkskel på hvis billedet er erkleret som en <asp:image runat="server"> eller normalt <img>
det første billeder kan man godt få fat i via Control-collection'en, det kan man ikke med det andet.
Jeg snakker om hvordan man har skrevet sin text på selve aspx-siden, og der siger jeg, at man ikke bare kan gennemløbe Controls-collectionen og forvente at finde alle <img-tagsene> hvis de ikke er sat til runat="server".
Jeg ved det godt, vi taler lidt forbi hinanden. Det jeg snakker om, er en javascript-metode der skal gøre det. Det kan godt være det er forkert at tænke i JavaScript når det er en ASP.NET-kategori.
Sqml reader fungere faktisk kun på meget simpelt html ville nok mere går får html tidy. Jeg har længe kigget efter en control der kan lave html til xml men der er ik noget rigtig godt på market endnu. Men ellers giver jeg dig ret i at regex oxo nemt kan løse problemmet.
en simpel DOM-parser burde kunne gøre tricket... det nemmeste ville være at bruge browserens eget DOM-træ, men det grø pludselig ens javascript browser-specifik :(
Jeg vil meget gerne hav ekode til SgmlReader der virker til stort set alt html. Hvad er konsekvensen? Hvad gør den hvis den finder noget den ikke kan parse?
Jaja, men det er da bare den almindelige SgmlReader. Jeg troede du havde lavet den om, så den kunne æde noget mere HTML end den allerede kan. Den kan nemlig ikke håndtere fejl i HTML'en som det er nu - såsom overlappende tags.
jeg havde også problem med den ikke ville æde alt html fordi jeg loaede den rene html fra sgml reader ind i et XmlDocument. Men hvis man i stedet loader SgmlReader in i XmlDocument så virker det på alt jeg har forsøgt på hvilket ikke er så lidt endnda. Prøv den her måde og så se om det vikke virker med alt:
public XmlDocument GetDocument(string html) { SgmlReader r = new SgmlReader(); r.DocType = "HTML";
StringReader sr = new System.IO.StringReader(html); r.InputStream = sr;
XmlDocument doc = new XmlDocument(); doc.Load(r);
return doc; }
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.