首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在IE7中通过javascript访问小程序方法

在IE7中通过javascript访问小程序方法
EN

Stack Overflow用户
提问于 2012-04-12 19:49:34
回答 2查看 662关注 0票数 2

我有一个在火狐中运行良好的小程序,但是在ie8 (我想还有ie7 )中,javascript似乎不能访问小程序的方法。

在js调试器中-

代码语言:javascript
复制
scanApplet.addUploadParameter

给了我一个java异常-

代码语言:javascript
复制
java.lang.NoSuchFieldException: addUploadParameter in class: co.altcom.cache.scanner.CacheScan

我实际上想要运行的(jquery)代码是

代码语言:javascript
复制
$('input, select').each(function () {
    scanApplet.addUploadParameter(this.name, this.value);
});

它抛出了以下java异常-

代码语言:javascript
复制
java.lang.NullPointerException

我真的不知道从哪里开始..

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-17 17:09:29

我没有在我的问题中包括它,但我使用jquery创建了scanApplet变量-

代码语言:javascript
复制
var scanApplet = $('#scanApplet')[0]

看起来问题出在scanApplet变量上。下面的代码解决了这个问题。

代码语言:javascript
复制
        $('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的方式有关,但我从来没有找到任何关于它的文档。我正在使用以下代码部署applet -

代码语言:javascript
复制
        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中的问题。

票数 0
EN

Stack Overflow用户

发布于 2012-04-12 20:07:28

each中,您应该在jQuery函数中使用this关键字。此外,对于name可以使用prop函数,对于value可以使用val()函数。所以jQuery应该是:

代码语言:javascript
复制
$('input, select').each(function () {  
    scanApplet.addUploadParameter($(this).prop('name'), $(this).val());  
}); 

这应该可以修复JavaScript位。如果没有更多的信息,我不知道它是否修复了你所有的问题,是否修复了Java错误,所以如果之后你还需要更多的帮助,请给我们更多的信息。

编辑

在评论中提到了IE7仍然会给出问题。你应该在IE7中调试这个调用,然后看看是哪部分代码给你带来了麻烦。一种快速的、过时的、非常脏的方法是记录或提醒事件,看看问题出在哪里。例如:

代码语言:javascript
复制
    // scanApplet.addUploadParameter($(this).prop('name'), $(this).val());
    alert(scanApplet);
    alert(scanApplet.addUploadParameter);
    alert($(this).prop('name'));
    // etc etc
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10122964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档