btc baner

Pages

Thursday, January 15, 2015

Looping object dengan Prototype javascript di Internet Explorer

Internet explorer punya banyak perbedaan dengan browser lain seperti Firefox atau Safari. Mungkin karena merupakan browser yang paling banyak digunakan di dunia sehingga dengan seenaknya pengembangan browser Internet Explorer tidak mengikuti standar yang sama. Katanya sih ke depan IE akan dikembangkan mengikuti standar, namun hingga IE 7, IE stabil yang terakhir dirilis saat tulisan ini dibuat masih memiliki perbedaan dengan browser lainnya untuk penanganan CSS dan Javascript. Salah satunya pada penanganan looping object javascript yang bekerja dengan baik di Firefox dan Safari ternyata tidak dapat berjalan di IE7.
Contoh kode looping pada object Javascript dengan bantuan Prototype Javascript:
var foo = new Array();
foo[0] = "zero";
foo[1] = "one";
foo[2] = "two";

var out = "";
foo.each(function(obj){
out += obj+ " ";
});

alert(out);
Kode diatas akan menghasilkan ouput “zero one two” pada browser Firefox dan Safari namun pada IE7 tidak akan menghasilkan apa-apa. Sepertinya tidak terjadi looping sama sekali pada IE7. penggunaan fungsi each yang merupakan fungsi tambahan dari Prototype Javascript untuk memudahkan looping juga tidak membantu. Solusinya adalah menggunakan fungsi lainnya pada Prototype Javascript sebelum melakukan looping dengan fungsi each. Fungsi tersebut adalah compact() yang merupakan fungsi pada prototype yang akan menghilangkan nilai null dalam koleksi objek atau array dan mengembalikan objek atau array tanpa nilai null. Jadi sepertinya yang menjadi permasalahan adalah IE7 tidak dapat melakukan looping bila ada nilai null dalam koleksi array atau objek. Kodenya menjadi seperti berikut:
var foo = new Array();
foo[0] = "zero";
foo[1] = "one";
foo[2] = "two";

var out = "";
foo.compact().each(function(obj){
out += obj+ " ";
});

alert(out);
Hasilnya adalah output yang sama dengan Firefox dan Safari. Sesuai dengan yang saya harapkan. Solusi ini saya temukan di http://hamiltonsonline.net/ross/?tag=array-explorer-ie-iterate setelah seharian dipusingkan dengan IE7.

0 komentar:

Post a Comment