Kategoriler
Kodlama

Eski sayfalardaki gömülü flash objelerini gizlemek

Flash objelerini gizlemek için bir yöntem.

Bildiğiniz gibi 2021 itibariyle “Adobe Flash artık yok”, tamamen yok yani hiçbir güncel web tarayıcısı flash çalıştırmayacak. Şimdiye kadar sayfalara güvenlik izni verdiğinizde görünebiliyordu ancak artık hiçbir şekilde gösterilmeyecek.

Eskiden, HTML5 henüz yokken sayfalarda <video>, <audio> gibi etiketler yokken. çoğu dosyaları sayfaya eklemek için <object> ve <embed> kullanılırdı. Swf uzantılı flash animasyonlar da çok popülerdi.

Benim gibi eski blog yazarları muhtemelen bazı sayfalarına mutlaka flash .swf dosyaları eklemiştir, bu tür flash ekli sayfalar şu an tarayıcılarda güvenlik riski uyarısı vermekte. Bundan inanılmaz basit bir şekilde nasıl kurtulabileceğinizi yazacağım.

Tarayıcılar html sayfalarında bir eleman eğer “display: none” ile birlikte visibility: hidden; olarak ekli ise onu göstermedikleri gibi çalıştırmazlar veya yürütmezler, diğer CSS ile gizleme teknikleri elemanı göstermese dahi tarayıcı içerdiği dosyayı yükler. En azından Chrome’da böyle.

Dolayısıyla biz eski sayfalarımızdaki embed edilmiş flash dosyalarını display:none / visibility: hidden; kullanarak yok edeceğiz, çünkü binlerce yazınız varsa içlerinden tek tek flash dosyalarını kaldırmaktan daha kolay.

Aşağıdaki kod sitenizin eski sayfalarındaki application/x-shockwave-flash olarak embed edilmiş şeyleri yok eder:

//flash uygulama olduğunda
embed[type^="application/x-shockwave-flash"],
object[type^="application/x-shockwave-flash"]{
display: none;
visibility: hidden;
}
//veya bu swf dosyaları için başka bir çözüm
embed[src*=".swf"], object[src*=".swf"]{
display: none;
visibility: hidden;
}

Belki kodu daha da geliştirip şöyle de yapabilirsiniz:

object{
background:url(/favicon.png) no-repeat center;
max-height: 200px;
}
object embed, 
embed[src*="swf"], 
embed[type^="application/x-shockwave-flash"]{
display: none;
visibility: hidden;
}

1. koda flashları tamamen yok eder. 2. kod embedi yok etse de object etiketine bir arka plan ekleyip ziyaretçiye eskiden buralarda bir şeyler vardı ama artık yok deme yöntemi olabilir. Ayrıca Object elementi de artık eskide kalmış ve modern tarayıcıların desteklemediği kullanılmayan bir etikettir, fakat eski sayfalarınızda flash harici object ile eklediğiniz video veya audio dosyaları olabilir bu yüzden dilerseniz bu elemanı gizlemek için kullanmayabilirsiniz ki benim kod ona sadece arka plan ve maksimum yükseklik limiti atıyor ve gizlemiyor.

Benim de kullandığım çalışan en sağlam CSS kodu:

object[type^="application/x-shockwave-flash"],
embed[type^="application/x-shockwave-flash"],
embed[src*=".swf"],
object[src*=".swf"]{
display: none!important;
visibility: hidden;
}

Alternatif olarak jQuery de kullanılabilir örnek:

$('embed[src*="swf"]').each(function(){ 
$('object').remove();
$('embed').remove();
});

Bu konudaki amaç, kullanıcını eski sayfaları herhangi bir uyarı görmenden gezebilmesini sağlamak.

Bu da böyle bir anımdı, kolay gelsin.