2017-08-13 2 views
0

シミュレータのコードネームワンでアプリケーションを開発していたのですが、私は奇妙な問題に直面しました。Code-Name-Oneの奇妙な振る舞いシミュレータ内のブラウザ

TabTabsがあります。このタブのHTMLコンテンツはbrowserComponentです。それはspan要素を持ち、JavaScript関数onclickイベントを呼び出します。このJavaScript関数は、新しいTabを作成し、Tabsに追加するJavaメソッドを呼び出します。

この時点ではすべてがうまくいっていますが、BrowserComponentは私の指示なしにCodeNameONeホームページのロードを開始するので、バグかどうか疑問に思っていました。私はCodeNameOneの最後のバージョンでNetBeans 8.2を使用しています。

NOTEので、私は他のどんなものよりもTabs以上に関連していると思う私はTabs上で別の例では、JS関数からJavaメソッドと呼ばれ、ブラウザが任意の外部のページをロードしませんでした。

注記私はコードに関する問題はないと確信していますが、勧告後に投稿しました。

これはJavaScript関数です:

function openMessageFaceJS() 
    { 
     window.openMessageFace();     
    } 

、これはJavaメソッド

this.context.getWindow().//context is a JSObject 
      set("openMessageFace", (JSFunction) (who, are_you) -> 
      { 
       manager.openMessageFace(); 
       //look blow to see this method openMessageFace(); 
      }); 

され、

public void openMessageFace() 
{ 
    //this operation is performed successfuly 
    Component component = create1(); 

    tabs.addTab("what (:", component); 
    sendMessageFacePosotiin = tabs.getTabCount() - 1; 
    tabs.setSelectedIndex(sendMessageFacePosotiin, true); 
} 
+0

そして、どのように正確にあなたが期待しています実際のコードが見えない場合は誰でも手伝ってください。 –

+0

@JimGarrison興味深いのおかげさま2つの理由でコードをアップロードしなかった** 1)**コードは、JSの関数から 'Java'メソッドを呼び出すと、** 2)それはうまくいきましたが、 'Tabs'ではなく、コードとの関係がないと思っています – Anas

+0

コードの書式設定を乱用するのを止められますか?これは実際のコードであり、プログラミング言語の名前ではありません。 – bcsb1001

答えて

1

あなたはコールバックを呼び出している別のクラスでは、実際のメソッドのコードページのロードが完了する前に「ブリッジ」がまだ完全にセットアップされていないことを確認します。一番安全なことは、JSブリッジのすべてをonLoad Webイベントの中に入れて、セットアップが完了したことを保証することです。


BrowserComponent bc = new BrowserComponent(); 
bc.addWebEventListener("onLoad", e->{ 
    JavascriptContext ctx = new JavascriptContext(bc); 
    ... etc.... 
}); 

言った、私はこの問題here

を防ぐ必要がある小さな修正を行ったことは、次のライブラリのアップデートで利用できるようになります(金曜日私は信じている)

+0

興味深い@steveに感謝しますが、コールバックの "Java"メソッドが呼び出され、ページが完全に正常にロードされ、問題が投稿されたコードが使用される** **問題は**まさに "コールバックJavaメソッドが正常に呼び出された後、ブラウザはページをロードします。このページはコードネーム1のホームページです – Anas

+0

私はまた、ページが完全に読み込まれる前に実行されるようになりました。そして、正常に読み込まれたとき、順番に実行します。(: – Anas

+0

スティーブ、これはこのコミットの副作用ですか? https://github.com/codenameone/CodenameOne/commit/ce5bbd28e5e1bc297f292ccf30e550de08810250 –