0

JSObject.call を使用して、アプレットから Java Script API を呼び出しています。これは、Chrome Firefox と Internet Explorer v7 および v8 でうまく機能します。v9 と v10 でアプレットが動作しません。JSObject.call を呼び出すと失敗し、Java Script (アプレットに実装されている) から呼び出された API (myMethod など) を実行できないことがわかります。

アプレットから -

public void paint(Graphics g)            
{                                                
    if (!appletInit)                         
    {                                            
        try                                     
        {                                                
            window = JSObject.getWindow(this);
            window.call("MyAppletLoad", new Object[0]);                                     
        }                                    
        catch (Exception e)                                    
        {                                                                                 
            e.printStackTrace();                                    
        }                                                                     
    }                        
    appletInit = true;                                    
}

Explorer デバッグ コンソールに次のエラーが表示されます。

SCRIPT438: オブジェクトはプロパティまたはメソッド 'myMethod' をサポートしていません

Java コンソールに次の例外が表示されます。

Exception in thread "AWT-EventQueue-3" netscape.javascript.JSException: Unspecified error invoking method or accessing property "onAppletLoad"
            at sun.plugin2.main.client.MessagePassingJSObject.newJSException(Unknown Source)
            at sun.plugin2.main.client.MessagePassingJSObject.waitForReply(Unknown Source)
            at sun.plugin2.main.client.MessagePassingJSObject.call(Unknown Source)
            at SmartConfig.paint(SmartConfig.java:239)
            at sun.awt.RepaintArea.paintComponent(Unknown Source)
            at sun.awt.RepaintArea.paint(Unknown Source)
            at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
            at java.awt.Component.dispatchEventImpl(Unknown Source)
            at java.awt.Container.dispatchEventImpl(Unknown Source)
            at java.awt.Component.dispatchEvent(Unknown Source)
            at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
            at java.awt.EventQueue.access$200(Unknown Source)
            at java.awt.EventQueue$3.run(Unknown Source)
            at java.awt.EventQueue$3.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
            at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
            at java.awt.EventQueue$4.run(Unknown Source)
            at java.awt.EventQueue$4.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
            at java.awt.EventQueue.dispatchEvent(Unknown Source)
            at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
            at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
            at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.awt.EventDispatchThread.run(Unknown Source)

行 239 は、JSObject.call を使用する行です。 window.call("MyAppletLoad", new Object[0]);

ブラウザー モードを互換表示または古いバージョン (8 以下) に設定すると、問題なく動作します。IE9\10のバグですか?IE8との違いは?このエラーを修正するにはどうすればよいですか? 手伝ってください。ありがとう!

4

0 に答える 0