Ответ 1
почему бы не поместить имя обратного вызова? что-то вроде
//for example, a global function
window['someFunctionName'].call();
//a namespaced function
//similar to doing ns.someFunctionName()
ns['someFunctionName'].call();
Я работаю с библиотекой загрузки файлов Javascript, и одна из ее функций заключается в том, что она использует встроенные атрибуты данных HTML5 для передачи информации плагину.
Это отлично работает для любых связанных данных, строк, чисел и т.д., однако у плагина есть некоторые методы обратного вызова, к которым вы можете назначить функцию. Моя проблема в том, что при попытке передать функцию javascript через эти встроенные атрибуты данных, например:
<input type="file" name="test" data-on-finish="alert();">
Плагин берет ссылку на метод обратного вызова onFinish(), но когда он пытается выполнить любой javascript, который я там вставляю, я получаю сообщение об ошибке:
Uncaught TypeError: Object alert(); has no method 'call'
Я предполагаю, что он читает alert();
как строку. Любая идея, как я могу пройти через исполняемый javascript к плагину?
Я считаю, что плагин, который я использую, является расширением плагина для загрузки файла jQuery: https://github.com/blueimp/jQuery-File-Upload/wiki/Options
Update: Я также пытался использовать глобально определенные функции, например:
<script type="text/javascript">
function myTesting(){
alert('yay');
}
</script>
<input type="file" name="test" data-on-finish="myTesting">
Я попытался изменить атрибут data-on-finish
на myTesting
, myTesting()
, все еще не повезло...
почему бы не поместить имя обратного вызова? что-то вроде
//for example, a global function
window['someFunctionName'].call();
//a namespaced function
//similar to doing ns.someFunctionName()
ns['someFunctionName'].call();
Похоже, что он пытается вызвать функцию обратно, как в myfunction.call(
Попробуйте передать такую функцию.
<input type="file" name="test" data-on-finish="myFunction;">
function myFunction(){
alert('I am alerting');
};
Используйте что-то вроде этого:
$(function() {
function test() {
alert("ok");
}
$(".test").data("test", test);
$(".test").data("test")();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<div class="test">
</div>