Dalam percubaan untuk membaca kandungan fail daripada mesin klien menggunakan penyemak imbas, skrip sahaja penyelesaian telah dibangunkan untuk Firefox dan Internet Explorer. Penyelesaian itu memanfaatkan API Fail untuk Firefox dan ActiveXObject untuk Internet Explorer.
API Fail untuk Firefox
function getFileContents() { var fileForUpload = document.forms[0].fileForUpload; var fileName = fileForUpload.value; if (fileForUpload.files) { var fileContents = fileForUpload.files.item(0).getAsBinary(); document.forms[0].fileContents.innerHTML = fileContents; } }
ActiveXObject untuk Internet Explorer
function ieReadFile(filename) { try { var fso = new ActiveXObject("Scripting.FileSystemObject"); var fh = fso.OpenTextFile(filename, 1); var contents = fh.ReadAll(); fh.Close(); return contents; } catch (Exception) { return "Cannot open file :("; } }
Pelayar Silang Sokongan
Walau bagaimanapun, tiada cara yang diketahui untuk melaksanakan tugas ini dalam penyemak imbas lain, seperti Safari dan Chrome, menggunakan kaedah di atas. API Fail, seperti yang dilaksanakan dalam penyemak imbas ini, hanya menyediakan akses kepada nama fail dan saiz fail, tidak mempunyai keupayaan untuk membaca kandungan.
Kemas Kini API Fail
Fail API telah diseragamkan dan dilaksanakan dalam kebanyakan penyemak imbas moden, termasuk IE 10 dan seterusnya. API ini menyokong pembacaan fail tak segerak, pengendalian fail binari dan penyahkodan pengekodan teks.
var file = document.getElementById("fileForUpload").files[0]; if (file) { var reader = new FileReader(); reader.readAsText(file, "UTF-8"); reader.onload = function (evt) { document.getElementById("fileContents").innerHTML = evt.target.result; } reader.onerror = function (evt) { document.getElementById("fileContents").innerHTML = "error reading file"; } }
WebKit dan HTML 5 Cadangan
Sebagai alternatif, jika mahu, seseorang boleh menyerahkan tampalan atau cadangkan Mozilla API untuk dimasukkan dalam HTML 5, meningkatkan kemungkinan keserasian merentas pelayar dalam masa depan.
Atas ialah kandungan terperinci Bagaimanakah JavaScript Boleh Membaca Kandungan Fail Setempat dalam Pelayar Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!