Mengakses Tag Kondisional Halaman Blogger di dalam JavaScript
document.addEventListener("DOMContentLoaded", function() {
if (typeof _WidgetManager === "undefined") return;
var data = _WidgetManager._GetAllData();
// Lakukan sesuatu dengan `data` di sini …
}, false);
Contoh
if (data.view.isSingleItem) { … }
if (data.view.type === "item") { … }
var url = data.view.url;
Labels: Blogger, JavaScript, Potongan, Widget
14 Comments:
Mantep. Ini yang saya cari
Mantap, belum sempat masuk ke situ, masih menggunakan class, makasih mas.
Memanfaatkan metode ini juga bagus supaya kita bisa menerapkan tag kondisional di dalam JavaScript tanpa perlu khawatir dengan efek yang ditimbulkan dari menambahkan atribut b:js='false' pada elemen <html> seperti ini.
if (document.documentElement.classList.contains('is-item')) { … }
Ini dari script async Rockpool yg diatas tag penutup body ya om?
Rockpoll? Apa itu?
Saya dapat ini dari gist.
Skrip yg ada di template blogger versi 3 itu om
Iya benar seperti itu, yang pakai seperti tutorial mas di artikel ini ada kekurangannya memang, saya sudah test soalnya. Kalo untuk template pribadi no problem, akan tetapi jika untuk dijual atau sekedar berbagi gratis sangat tidak pas untuk diterapkan, karena banyak user termasuk saya dulu yang sering ngotak ngati disable js bawaan, akibatnya akan tidak bekerja dan user itu kebingungan sendiri. Padahal saya pikir ngaruhnya ngak banyak, masalah ndak bisa aktif widget archiver, lightbox dll, rugi hehe
nhahhh ketemu juga akhirnya
Tambahan mas. Cara ini hanya berlaku kalau widget bundle bawaan Blogger belum dihapus. Soalnya banyak pengguna yang memilih menghilangkan widget bawaan tersebut termasuk saya. Tadinya heran kenapa nggak bekerja. Setelah widget bawaan dikembalikan baru jalan.
Tidak dirender:
<i rel="code">
<script type='application/ld+json'>
// <![CDATA[
{
"@context": "http://schema.org",
"@type": "WebSite",
"url": "<data:blog.url.canonical.https/>",
}
// ]]>
</script>
</i>
Saya lepas ini:
<i rel="code">
// <![CDATA[
// ]]>
</i>
<i rel="code">
<script type='application/ld+json'>
{
"@context": "http://schema.org",
"@type": "WebSite",
"url": "<data:blog.url.canonical.https/>",
}
</script>
</i>
Dirender.
Ketika saya menggunakan skrip yang harus menggunakan // <![CDATA[// ]]> (agar skrip saya tetap dirender dan tidak mengalami kerusakan atas perenderan), dan saya ingin mendapatkan data blogger tertentu di dalam skrip tersebut akhirnya gagal. Saya lepas // <![CDATA[// ]]> dan <data:blog.url.canonical.https/> tetap dirender, tetapi skrip saya tidak berfungsi. Saya pasang // <![CDATA[// ]]>, skrip saya berfungsi, tetapi <data:blog.url.canonical.https/> tidak dirender sebagai url yang kanonik. Ada solusi, kah?
Tidak bisa, itu sudah menjadi sikap standar markup XML:
In an XML document or external parsed entity, a CDATA section is a section of element content that is marked for the parser to interpret purely as textual data, not as markup. —CDATA
Hapus blok CDATA dan ubah semua karakter entitas HTML menjadi versi encode mereka:
<script type='application/ld+json'>
{
"@context": "http://schema.org",
"@type": "WebSite",
"url": "<data:blog.url.canonical.https/>"
}
</script>
Apakah harus mengkonversi juga ketika kita memanggil skrip dari luar? Atau jika kita memaksa maka Blogger tidak membacanya sebagai skrip? Untuk masalah ini, apakah ada tautan di DTE yang bisa membantu saya memahami masalah ini, agar supaya saya tidak banyak tanya di forum diskusi ini?
Syarat encode cuma untuk kode tersemat saja mbak. Ini berlaku juga pada CSS. Kode eksternal tidak ada sangkut-paut dengan mesin render Blogger.
boleh dicoba ini buat pembelajaran B)
Post a Comment
<< Home