Slut på "Klicka här om du vill aktivera" med ActiveX

Ni kanske kommer ihåg EOLAS stämming mot Microsoft som 2006 resulterade i att funktionalitet togs bort från IE.

EOLAS menade att man hade patent på hur ActiveX-kontroller inkluderades i i webbläsare. Detta även fast man inte hade en egen webbläsare i utveckling och många såg de som "patent-troll"

Microsoft bestämde sig då för att ändra sin webbläsare istället för att betala och man var nu tvungen att klicka en gång på kontrollen för att aktivera. Speciellt flash-utvecklare fick lida för detta eftersom man var tvungen att programmera sättet man inkluderade flashfiler. Som tur var det inte allt för jobbigt att komma runt om man visste de rätta knepen.

Nu under hösten 2007 har Microsoft gjort upp med EOLAS och betalat en okänd summa pengar för att återigen få använda tekniken.

IEBloggen skriver man att denna förändring kommer finnas med i Windows Vista SP1 and Windows XP SP3. Efter detta i april 2008 kommer resterande användare för en rekommenderad uppdatering i Windows kallad "IE Automatic Component Activation". Tim Heuer har också skrivit en rad om det.

By Jesper Lind

Flash - som man bäddar får man ligga

Det har nyligen blivit krångligare att embedda flash i sina projekt. I alla fall om man vill följa webbstandarder och få det att funka i alla webbläsare.

En käpp i hjulet var Eolas stämning mot Microsoft som ledde till att mjukvarujätten beslutade sig för att ta bort viss funktionalitet ur IE. Som tur var gick det att hacka runt det och vi har skrivit om en lösning hur man fixar autostart på ActiveX-objekt tidigare.

En annan gång råkade vi i trubbel när vi på den här bloggen hade en flash-fil som vägrade att validera som XHTML. Då sökte vi hjälp hos en artikel hos suveräna "A List Apart".

Nu har samma sajt (AAL) skrivit en uppföljare med ny genomgång av flash-trasslet. Har inte läst hela men man diskuterar bland annat taggarna embed och object plats ibland webbstandarderna. Denna kommer jag återvända till nästa gång jag känner för att försöka använda flash och samtidigt ha en XHTML-kompatibel hemsida.

Uppdatering: Tyckte jag läst nåt annat om det här nyligen, Robert Nymans inlägg om XHTML med Flash är något att kolla vidare på.

By Jesper Lind

Fixa ActiveX-kontroller så de aktiveras i IE

Bakgrund
Microsoft blev år 2003 stämda av företaget Eolas som krävde ett skadestånd på 521 miljoner dollar. Eolas menar att Microsoft har använt patenterad teknik i deras populära webbläsare, Internet Explorer, genom sättet som de länkar in ActiveX-kontroller. Detta omfattar Flash, Quicktime, Microsoft mediaspelare m.m.

Istället för att betala skadeståndet svarade Microsoft med att ta bort denna funktionalitet från IE. Detta skedde genom en säkerhetsuppdatering i juni 2006. Microsoft har fått en del kritik för sitt förhavande, speciellt eftersom man valde att få det att se ut som en säkerhetsuppdatering för användarna. Man borde ha gjort en speciell uppdatering för att bättre förklara bakgrunden till borttagningen av AxtiveX funktionerna.

Läs mer om stämningen här:
http://www.informationweek.com/security/showArticle.jhtml?articleID=185300841

Problemet och lösningar
Om inget görs möts besökaren av meddelandet "Klicka här om du vill aktivera och använda den här kontrollen." och man måste klicka en extra gång innan man kan använda kontrollen.

Det finns några sätt att arbeta runt dessa nya begränsningar som involverar javascript och omskrivande av embed-taggarna.

Här är Microsofts rekommendationer:
http://msdn.microsoft.com/workshop/author/dhtml/overview/activating_activex.asp

Och Macromedias:
http://www.adobe.com/devnet/activecontent/articles/devletter.html

Båda dessa tekniker innebär att man skriver om all kod och detta kan vara väldigt omständigt på en stor hemsida som innehåller många ActiveX kontroller.

Den lätta lösningen
Det finns dock en enkel lösning genom att använda följande javascript-include. Döp scriptet till förslagsvis activate_activex.js och länka in det längst ner på sidan som innehåller dina kontroller precis innan /body-taggen.


theObjects = document.getElementsByTagName("object");
for (var i = 0; i < theObjects.length; i++) {
theObjects[i].outerHTML = theObjects[i].outerHTML;
}

Jag hittade detta användbara skript här:
http://www.amarasoftware.com/flash-problem.htm

By Jesper Lind
1