Header Ads

Vultr $100

MENGGUNAKAN JAVASCRIPT UNTUK MODIFIKASI DAN MENGHILANGKAN FBCLID FACEBOOK


Parameter baru pada pelacakan Facebook, fbclid, mungkin ditambahkan untuk bekerja pada pembatasan pelacakan pihak ketiga, dan hal ini berfungsi. Mozilla telah mencoba untuk memperbaiki Facebook Container mereka yang mencegah Facebook untuk melacak pengguna di web, baca pada post sebelumnya. Metode ini juga menghilangkan caching pada Cloudflare.

Modifikasi pada history entry
Untungnya, saya tidak perlu berurusan dengan masalah seperti itu tetapi saya masih sangat nggak suka parameter di URL saya yang dilihat orang ketika datang dari Facebook. Saya ingin mereka melihat, dan mengkopi & paste, alamat yang sesungguhnya dan bersih.

Saya dapat menghapus parameter di sisi server, dan mengeluarkan pengalihan untuk browser yang me-loading halaman yang sama. Hal ini akan membutuhkan tambahan dan pengunjung "dihukum" dengan waktu muat yang sedikit lebih lama ketika datang ke situs saya dari Facebook karena redirecting bolak-balik ini.

Sebagai gantinya, saya mengambil pendekatan yang berbeda: Saya hanya akan menyembunyikan bagian URL yang nggak saya sukai banget. Tidak ada reload, tidak ada pengalihan, tidak ada redirecting ekstra. Sampeyan dapat menggunakan history.replaceState () untuk hal itu.

Deskripsi yang sangat disederhanakan: dimana hal ini hanya akan mengubah beberapa bagian dari URL yang Sampeyan lihat pada bar address browser Sampeyan tetapi tidak akan (kembali) memuat halaman (reloading). Metode replaceState () memiliki koneksi pushState (), yang juga akan menyisipkan catatan baru dalam riwayat halaman (page history), dan keduanya juga dapat menetapkan status yang akan tersedia pada popstate.

Removing fbclid

(function() {
var param = 'fbclid';
if (location.search.indexOf(param + '=') !== -1) {
var replace = '';
try {
var url = new URL(location);
url.searchParams.delete(param);
replace = url.href;
} catch (ex) {
var regExp = new RegExp('[?&]' + param + '=.*$');
replace = location.search.replace(regExp, '');
replace = location.pathname + replace + location.hash;
}
history.replaceState(null, '', replace);
}
})();

Begini cara kerjanya: ketika ada parameter fbclid pada URL itu akan menghapusnya menggunakan URL API, dan jika gagal, terutama karena API tidak didukung oleh Internet Explorer, maka hanya akan menghapus parameter dan nilai dari akhir URL menggunakan regular expression. hal ini tidak menjamin bahwa parameter fbclid akan selalu berada di akhir URL sehingga regular expression mungkin cocok dengan parameter lain juga, tetapi karena code itu hanya akan digunakan untuk Internet Explorer, dan saya tidak ingin memasukkan secara penuh query string parser yang baku, ini risiko yang dapat diterima bagi saya. Akhirnya, URL lama akan diganti dengan yang baru menggunakan history.replaceState ().

Sampeyan dapat menggunakan hanya varian regular expression tapi saya lebih menyukai URL API sehingga saya bisa menggunakannya pada browser yang mendukungnya. Pilihan lain adalah mengabaikan Internet Explorer dan jangan menyembunyikan parameter di dalamnya, yang tampaknya seperti rasio price-performance. Jika itu yang ingin Sampeyan lakukan, ganti code di blok if (...) {...} dengan:
try {
var url = new URL(location);
url.searchParams.delete(param);
history.replaceState(null, '', url.href);
} catch (ex) {
// pass
}

Simpan script sebagai, misalnya, remove-fbclid.js dan load menggunakan async dan defer atribut sehingga tidak memblokir rendering halaman:

<script src="remove-fbclid.js" async defer></script>

Sampeyan juga dapat mencobanya pada artikel ini sebenarnya, cukup tambahkan ?Fbclid=1337 ke URL, dan reload halaman. Untuk melihat memodifikasi history entri-nya, buka saja pada developer tools, buka consolel, dan jalankan, misalnya:
history.replaceState(null, '', '/admin');

Address bar sekarang tidak akan menampilkan URL baru tetapi kontennya tetap sama. Alamat baru pada dasarnya menggantikan yang lama. Jika Sampeyan menekan tombol kembali di browser, maka Sampeyan akan dibawa ke halaman di mana Sampeyan berada sebelum Sampeyan datang ke halaman di mana history.replaceState () dieksekusi. Tidak seperti history.pushState (), yang menambahkan entri baru ke browser history. Kami menggunakan ini pada Report URI, saat memperbarui URL untuk reflect pada filter report, misal pada bookmark dll.

Penggunaan pada WordPress ataupun Blogspot secara simple tinggal tambahkan script ini sebelum tutup tag </head>
<script type='text/javascript' async defer >(function() {
var param = 'fbclid';
if (location.search.indexOf(param + '=') !== -1) {
var replace = '';
try {
var url = new URL(location);
url.searchParams.delete(param);
replace = url.href;
} catch (ex) {
var regExp = new RegExp('[?&]' + param + '=.*$');
replace = location.search.replace(regExp, '');
replace = location.pathname + replace + location.hash;
}
history.replaceState(null, '', replace);
}
})();</script>