Internet Explorer och det försvunna urklippet

Låt mig berätta om ett problem vi hade med en webbapplikation vi utvecklat för en kund. När de försökte kopiera text från applikationen och klistra in den i Word så låste sig Word. Att klistra in texten i exempelvis Wordpad eller Notepad fungerade utmärkt.

Efter en del felsökning kunde jag isolera problemet. Jag upptäckte att jag åter igen satt i en situation där någonting fungerade i alla webbläsare – förutom Internet explorer. Alla som har utvecklat för webben vet att sådana här problem knappast är unika. Och de är lika tråkiga varje gång.

Så hur kunde jag lösa problemet den här gången? Eftersom nätet – och främst Stack Overflow, som normalt brukar kunna ge tips kring programmeringsproblem – varken kände till problemet eller lösningen fick jag ordna det på egen hand.

Ett urklipp i flera format samtidigt

Det här med urklipp visade sig vara betydligt mer avancerat än vad jag först trodde. Det är inte bara ren text som sparas i urklippshanteraren. Ett urklipp kan faktiskt finnas där i flera format samtidigt. Vad som används beror på egenskaperna hos de applikationer man kopierar från och klistrar in i.

Jag kan visa det med ett exempel.

När du kopierar en text i Internet explorer läggs i praktiken flera saker i urklippshanteraren. Det första du får är en ren text som används om du klistrar in innehållet i en textredigerare. Det andra du får är en rtf-formaterad text, som används av bland annat Wordpad. Det tredje du får är texten i html-format, som är det format Word använder som standard när du klistrar in en text.

8 MB bonusmaterial

När du kopierar någonting från Internet explorer hamnar givetvis den rena texten i urklippshanteraren. Utöver texten får du även med alla html-taggar som används i dokumentet fram till texten du kopierade – och allt innehåll i <head>-taggen.

Det var headern som ställde till det för oss eftersom all javascript-kod för webbapplikationen fanns där. Koden var 8 MB stor, vilket var betydligt mer än vad Word kunde hantera.

Lösningen på problemet blev att flytta <script>-taggen med koden in i <body>-taggen istället. Efter det fungerade det utmärkt att kopiera text från webbapplikationen och klistra in det i Word igen – med bibehållen formattering.

Att <head>-taggen följer med i urklippshanteraren är unikt för Internet explorer. Därför fanns inte problemet i någon av de andra webbläsarna.

För att inspektera html-innehållet i urklippshanteraren använde jag ett program som kan visa det råa innehållet. På Windows hämtade jag ClipView. På Macen laddade jag ner källkoden till ClipboardViewer och använde sedan Xcode för att bygga och köra programmet.

Så om du också stöter på underliga problem med Internet explorer och urklippshanteraren kanske den här texten kan hjälpa dig med lösningen även på de mysterierna.

2017-09-12 Henrik Djärv