Что такое обратный вызов?
blockquote>
- Как правило, телефонный звонок, сделанный для возврата того, что кто-то получил.
- При вычислении callback является частью исполняемого кода, который передается в качестве аргумента другому коду. Когда функция выполняется с ее работой (или при возникновении какого-либо события), она вызывает функцию обратного вызова (она вызывает вас обратно - отсюда и название).
Что такое функция обратного вызова?
blockquote>
- Функция обратного вызова подобна Слуге, который «обращается» к своему Учителю, когда он выполнил задачу.
- Функция обратного вызова - это функция, которая передается другой функции (назовем эту другую функцию
otherFunction
) в качестве параметра, а функция обратного вызова (или выполняется) внутриotherFunction
. function action (x, y, callback) {return callback (x, y); } умножение функции (x, y) {return x * y; } сложение функции (x, y) {return x + y; } alert (действие (10, 10, умножение)); // output: 100 alert (действие (10, 10, дополнение)); // output: 20В SOA обратный вызов позволяет модулям плагина получать доступ к сервисам из контейнера / среды.
Аналогия: обратные вызовы. Асинхронный. Неблокирование Пример реальной жизни для обратного вызова
Dom этот атрибут очень старый и не принят в современных браузерах, насколько я знаю, но вот альтернатива ему, попробуйте это
<script type="text/javascript" language="javascript">
function checkfile(sender) {
var validExts = new Array(".xlsx", ".xls", ".csv");
var fileExt = sender.value;
fileExt = fileExt.substring(fileExt.lastIndexOf('.'));
if (validExts.indexOf(fileExt) < 0) {
alert("Invalid file selected, valid files are of " +
validExts.toString() + " types.");
return false;
}
else return true;
}
</script>
<input type="file" id="file" onchange="checkfile(this);" />
Я думаю, это поможет вам, конечно, вы можете изменить этот скрипт в соответствии с вашими потребностями.
Это не сработало для меня в Safari 10:
<input type="file" accept=".csv" />
Я должен был написать это вместо:
<input type="file" accept="text/csv" />
Использование регулярных выражений будет быстрее
function checkIsExcel(file) {
if ((!/.*\.xlsx$/.test(file.name)) && (!/.*\.xls$/.test(file.name)) && (!/.*\.csv$/.test(file.name))) {
return false;
}
return true;
}