Flex / Flash 4 ExternalInterface.call - пытается получить строку из HTML в Actionscript - PullRequest
0 голосов
/ 18 мая 2010

Мне нужно получить строку из 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");

возвращается ноль и вылетает, предупреждение не отображается, сообщение об ошибке не отображается. Я могу успешно выполнить поиск Firefox DOM Inspector по "username-label" (document.getElementById ())

Единственное всплывающее окно с предупреждением - это окно предупреждения сценария действия, содержимое которого пустое.

firfox 3.5 windows, контейнер Tomcat.

Пожалуйста, сообщите, и спасибо заранее.

1 Ответ

0 голосов
/ 18 мая 2010
import flash.external.ExternalInterface;
public function getUserName():void{
      var isAvailable:Boolean = ExternalInterface.available;
      //var findUserName:String = "findUserName";
      if(isAvailable){
      ExternalInterface.call("findUserName");
      }
 }

Теперь создайте кнопку и вызовите эту функцию getUserName, а затем попробуйте поместить предупреждающее сообщение в JavaScript и посмотреть, вызывает ли это.

Сделайте метод Public и сообщите нам, можете ли вы вызвать имя метода JavaScript. Смотрите изменения, которые я сделал в функции u r

Примечание : Protected and 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 до вышеуказанной и дайте мне знать.

Спасибо.

...