0

HTMLから文字列を取得し、それをActionscriptに入れる必要があります。

アクションスクリプト:

import flash.external.ExternalInterface;
protected function getUserName():void{
            var isAvailable:Boolean = ExternalInterface.available;
            var findUserName:String = "findUserName";
            if(isAvailable){
                var foundUserName:String = ExternalInterface.call(findUserName).toString();
                Alert.show(foundUserName);}}

javascript:

function findUserName() {
    var label = document.getElementById("username-label");
    if(label.value != ""){
        alert("the name in the box is: " + label.value);
        return label.value;}
    else
        return "nothing in the textbox";}}

JSP:

<%IUserSession userSession = SessionManager.getSession();%>

<logic:notEmpty name="userSession">
    <logic:notEqual value="anonymous" name="userSession" property="userLoginId">
        <td align="right" width="10%" >
            <input id="username-label" type="text" value="<bean:write name="userSession" property="userLoginId"/>" />
        </td>
    </logic:notEqual>
</logic:notEmpty>

レンダリングされたHTML:

<td align="right" width="10%">
    <input id="username-label" type="text" value="a-valid-username" />
</td>

javascriptの実行がヒットしたとき

var label = document.getElementById("username-label");

nullが返され、クラッシュします。アラートは表示されず、エラーメッセージは表示されません。「username-label」(document.getElementById())でFirefoxDOMInspectorの検索を正常に実行できます

ポップアップ表示される唯一のアラートボックスはアクションスクリプトアラートボックスであり、内容は空白です。

firfox 3.5ウィンドウ、コンテナはTomcatです。

事前にアドバイス、ありがとうございます。

4

1 に答える 1

0
import flash.external.ExternalInterface;
public function getUserName():void{
      var isAvailable:Boolean = ExternalInterface.available;
      //var findUserName:String = "findUserName";
      if(isAvailable){
      ExternalInterface.call("findUserName");
      }
 }

ボタンを作成し、この関数 getUserName を呼び出して、JavaScript で警告メッセージを入力して、それが呼び出されるかどうかを確認します。

メソッドをパブリックにして、JavaScript メソッド名を呼び出せるかどうかをお知らせください。ur関数で行った変更を確認してください

: Protected と Private も機能します。これはテスト用です。

その他の更新:

function findUserName() {
    // We are checking down initially itself.
    if (!document.getElementById) return;
    var label = document.getElementById(username-label);
    alert(label);
    if(label.value != ""){
        alert("the name in the box is: " + label.value);
        return label.value;}
    else
        return "nothing in the textbox";}}

JavaScript 関数を上記のように更新して、お知らせください。

ありがとう。

于 2010-05-18T14:19:08.250 に答える