Mengenai proses penggunaan SWFObject V1.5 saya, saya telah tamat buat sementara waktu dengan pengenalan di bahagian sebelumnya Sekarang saya akan mengetuai SWFObject V2.1 untuk bertemu dengan anda. 1 lebih awal, Jika ya, anda mungkin tidak akan terganggu dengan masalah "menunggu HTML DOM untuk dimuatkan".
Pertama sekali, izinkan saya memberi anda pengenalan ringkas kepada contoh panggilan sintaks V2.1:
< script type="text/javascript"> ;
//1 Gunakan Json untuk memulakan pembolehubah, parameter dan sifat
var flashvars = {
name1: "hello",
name2: "world ",
name3: "foobar"
};
var params = {
menu: "false"
};
var attributes = {
id: "dynamicContent2" ,
nama: "dynamicContent2"
};
swfobject.embedSWF("test6_flashvars.swf", "content2", "300", "120", "6.0.0", "expressInstall.swf" , flashvars, params, atribut);
//2. Tetapan permulaan tradisional, kesannya adalah sama
var flashvars = {};
flashvars.name1 = "hello";
flashvars.name2 = "world";
flashvars.name3 = " foobar";
var params = {};
params.menu = "false";
var attributes = {};
atribut. id = "dynamicContent3";
attributes.name = "dynamicContent3";
swfobject.embedSWF("test6_flashvars.swf", "content3", "300", "120", "6.0.0",
"expressInstall.swf", flashvars, params, attributes) ;
///3 Tulis terus di belakang, hanya satu ayat, ringkas dan berkuasa, tanpa ceroboh
swfobject.embedSWF("test6_flashvars.swf. ", "content5", "300", "120",
"6.0.0", "expressInstall.swf", {name1:"hello",name2:"world",name3:"foobar"}, { menu:"false"}, {id:"dynamicContent5",name:" dynamicContent5"});
Secara peribadi, saya lebih suka cara penulisan ketiga di atas. Seperti yang akan dinyatakan di bawah, saya membenamkan Flash dalam kod HTML Penyelesaian terakhir fail adalah dengan menggunakan gaya ketiga memanggil swfobject.embedSWF(). Gaya versi V2.1 sangat konsisten dengan gaya JS moden, dan kod itu kelihatan lebih ringkas.
Penyelesaian yang diterima pakai dalam artikel sebelum ini nampaknya dapat memenuhi kebanyakan keperluan, dan keserasian itu nampaknya layak untuk memenuhi keperluan kebanyakan rakan, dan ia mungkin bukan a penyelesaian yang baik. Walau bagaimanapun, terdapat situasi yang agak melampau yang saya temui, iaitu:
SWFObject baharu("http://www.pec365.com/Flash/20071113.swf", "mymovie", "304", "367", "7", "#FFFFFF");
, jika alamat fail Flash yang masuk salah, atau fail Flash dipadamkan daripada pelayan, maka anda akan melihat situasi yang paling anda tidak mahu lihat, contohnya
Seperti berikut:
DEMO< / kepala>
Adalah disyorkan agar anda melaksanakan sendiri kod ini Jika anda seorang pemula, anda boleh merujuk kepada langkah-langkah yang diperkenalkan dalam artikel sebelum ini untuk menjalankan kod ini dan benar-benar merasakan "bencana" yang akan datang.
Ya, anda akan melihat bahawa halaman itu kosong, dan imej yang pada asalnya digunakan untuk menggantikan sandaran apabila Flash tidak dapat dipaparkan juga hilang Ke mana perginya? Selepas nyahpepijat, saya mendapati bahawa walaupun alamat fail Flash yang masuk salah, teg yang salah akan dibuat dan [… … ]
digantikan dengan kandungan di dalamnya, supaya apa yang anda lihat akan membentuk kawasan kosong dengan ketinggian dan lebar masing-masing 304px dan 367px (jika Flash player dipasang, klik kanan tetikus di sebelah kiri atas sudut skrin, anda Sesuatu akan ditemui), jadi mimpi ngeri datang.
Untuk menyelesaikan hasil mimpi ngeri ini, saya mendapat idea yang tidak baik, mula-mula, semak sama ada fail itu benar-benar wujud pada pelayan berdasarkan alamat fail Flash yang masuk Jika hasil yang dikembalikan ialah If the Flash fail wujud, kemudian laksanakan kaedah swfobject.embedSWF() dan idea khusus ialah menggunakan objek XMLHttpRequest untuk meminta pelayan melalui GET/HEAD, dan kemudian tentukan bahawa xmlHttp.status == 200 || xmlHttp.status == 302 wujud sebagai asas fail, tetapi kaedah ini nampaknya masih mempunyai kelemahan tertentu, dan saya masih belum dapat memperbaikinya Berikut ialah contoh penyelesaian terakhir saya:
DEMO< head>
< script language="javascript" type="text/javascript" src="JavaScript/swfobject.js">
(fungsi( ) {
var xmlHttp,
hasil,
flashURL = "http://www.pec365.com/Flash/20071113.swf";
var checkFlashURL = function(url) {
xmlHttp = GetXmlHttpObject();
xmlHttp.onreadystatechange = function() {
if ( xmlHttp.readyState == 4 ) {
if ( xmlHttp.status == 200 ||.
xmlHttp .status == 302 ) {
return (hasil = benar);
}
}
};
xmlHttp.open("HEAD", url, benar);
xmlHttp .send(null);
};
var GetXmlHttpObject = function() {
var xmlHttp = null;
cuba {
// Firefox, Opera 8.0 , Safari
xmlHttp = XMLHttpRequest();
}
tangkap (e) {
// Internet Explorer
cuba {
// IE Lama
xmlHttp = ActiveXObject baharu ("Msxml2.XMLHTTP") ;
} tangkapan (e) {
// IE Baharu
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
};
// Ia digunakan untuk menyemak sama ada fail Flash yang ditentukan wujud pada pelayan
checkFlashURL(flashURL
window.onload = function() {
jika ( hasil ) {
swfobject.embedSWF(flashURL, "flashcontent", "304", "367", "10.0.0", "expressInstall.swf", {}, { quality:"autohigh", wmode:"transparent" }, {} );
}
else {
window.alert("Alamat Flash anda tidak sah, sila semak dengan teliti"); betul semasa nyahpepijat
}
}
})();
< ;div id="flashcontent">
< /form>