2

私はFirefoxで問題なく動作するアプレットを持っていますが、ie8(および私が思うにie7)では、javascriptはアプレットメソッドにアクセスできないようです。

jsデバッガーで-

scanApplet.addUploadParameter

私にJava例外を与えます-

java.lang.NoSuchFieldException: addUploadParameter in class: co.altcom.cache.scanner.CacheScan

私が実際に実行しようとしている(jquery)コードは

$('input, select').each(function () {
    scanApplet.addUploadParameter(this.name, this.value);
});

次のJava例外をスローしています-

java.lang.NullPointerException

どこから始めればいいのか本当にわかりません..

4

2 に答える 2

2

内では、jQuery 関数にラップされたキーワードeachを使用する必要があります。thisさらに、名前にはprop関数を使用でき、値にはval()関数があります。したがって、jQuery は次のようになります。

$('input, select').each(function () {  
    scanApplet.addUploadParameter($(this).prop('name'), $(this).val());  
}); 

これで JavaScript のビットが修正されるはずです。これ以上の情報がなければ、すべての問題が解決されたかどうか、また Java エラーが解決されたかどうかはわかりません。この後もさらにサポートが必要な場合は、さらに詳しい情報をお知らせください。

編集
コメントでは、IE7 にはまだ問題があると記載されています。IE7 で呼び出しをデバッグしてから、コードのどのビットが問題を引き起こしているかを確認する必要があります。手っ取り早く、古風で非常に汚い方法は、単にログに記録するか警告を発して、問題がどこにあるかを確認することです。例えば:

    // scanApplet.addUploadParameter($(this).prop('name'), $(this).val());
    alert(scanApplet);
    alert(scanApplet.addUploadParameter);
    alert($(this).prop('name'));
    // etc etc
于 2012-04-12T12:07:28.447 に答える
0

質問には含めませんでしたが、jqueryを使用してscanApplet変数を作成していました-

var scanApplet = $('#scanApplet')[0]

scanApplet問題だったのは変数のようです。次のコードは問題を修正します。

        $('input, select').each(function () {
            var el_name = $(this).prop('name');
            var el_value = $(this).val();
            if (Browser.Version() < 8) {
                scanApplet.addUploadParameter(el_name, el_value);
            } else {
                $('#scanApplet')[0].addUploadParameter(el_name, el_value);
            }
        });

ie7 でこのようにアプレットを参照できる理由がわかりません。コードに scanApplet への割り当てがありません。Java の deployJava.js が ie を処理する方法に関係していると思いますが、それに関するドキュメントは見つかりませんでした。 . 次を使用してアプレットを展開しています-

        var attributes = {id: 'scanApplet', code: "{{ jar_path }}",  width:1, height:1} ;
        var parameters = {jnlp_href: "{{ jnlp_path }}"} ;
        deployJava.runApplet(attributes, parameters, '1.6');

使用しているjqueryのバージョンを変更したと思いますが、1.6.1を1.4.2にすばやく交換しようとしましたが、元のコードは修正されませんでした。

とにかく、ID でアプレットを参照すると、ie7 での問題が解決するようです。

于 2012-05-17T09:09:29.217 に答える