10

私は Javascript ファイル アップロード ライブラリを使用しています。その機能の 1 つは、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

更新: 次のように、グローバルに定義された関数も使用してみました:

<script type="text/javascript">
    function myTesting(){
       alert('yay');
    }
</script>
<input type="file" name="test" data-on-finish="myTesting">

data-on-finish属性をmyTestingに変更しようとしましたがmyTesting()、まだうまくいきません...

4

3 に答える 3

20

代わりにコールバックの名前を配置しないのはなぜですか? 何かのようなもの

//for example, a global function
window['someFunctionName'].call();

//a namespaced function
//similar to doing ns.someFunctionName()
ns['someFunctionName'].call();
于 2012-06-23T00:26:42.987 に答える
0

myfunction.call( のように、関数をコールバックしようとしているようです。

お試し渡しはこんな感じの機能です。

<input type="file" name="test" data-on-finish="myFunction;">

function myFunction(){
 alert('I am alerting');
};
于 2012-06-23T00:30:15.473 に答える
0

次のようなものを使用します。

$(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>

于 2016-07-24T04:51:05.443 に答える