【问题标题】:How to make input text control ready for input on creationComplete in Flex/MXML?如何使输入文本控件准备好在 Flex/MXML 中的 creationComplete 上输入?
【发布时间】:2012-03-19 17:51:25
【问题描述】:

我的小部件中有以下Application 标记代码:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
            xmlns:local="*"
            width="100%" height="100%" minWidth="200" minHeight="200" layout="absolute"
            creationComplete="init()" 
            defaultButton="{Send_btn}">

输入字段定义为

<mx:TextInput id="Input_txi" left="10" right="90" bottom="10"/>

接下来我在init()方法的末尾有以下内容:

            Input_txi.setFocus();
            Input_txi.selectRange(0,0);

尽管如此,我无法在页面加载后输入任何文本。我从视觉上看到Input_txi 有焦点,但键印什么也没做。我需要先点击Input_txi,然后才能输入任何文字。

如何做才能让我从头开始?

编辑 1

不管是在示例中还是在 jQuery 中都不起作用:

    <script type="text/javascript" src="swfobject.js"></script>
    <script type="text/javascript" src="jquery-1.7.1.js"></script>
    <script type="text/javascript">
        // For version detection, set to min. required Flash Player version, or 0 (or 0.0.0), for no version detection. 
        var swfVersionStr = "${version_major}.${version_minor}.${version_revision}";
        // To use express install, set to playerProductInstall.swf, otherwise the empty string. 
        var xiSwfUrlStr = "${expressInstallSwf}";
        var flashvars = {};
        var params = {};
        params.quality = "high";
        params.bgcolor = "${bgcolor}";
        params.allowscriptaccess = "sameDomain";
        params.allowfullscreen = "true";
        var attributes = {};
        attributes.id = "${application}";
        attributes.name = "${application}";
        attributes.align = "middle";
        swfobject.embedSWF(
            "${swf}.swf", "flashContent", 
            "${width}", "${height}", 
            swfVersionStr, xiSwfUrlStr, 
            flashvars, params, attributes, function(){
                /*
                var swf = $("#" + attributes.id);
                swf.attr("tabindex", 0);
                swf.focus();
                */

                var f = swfobject.getObjectById(attributes.id);
                f.tabIndex = 0;
                f.focus();
            });
        // JavaScript enabled so display the flashContent div in case it is not replaced with a swf object.
        swfobject.createCSS("#flashContent", "display:block;text-align:left;");

    </script>

【问题讨论】:

  • ExternalInterface 方法有效。

标签: actionscript-3 flash-builder mxml


【解决方案1】:

当浏览器加载页面时,正确的文本输入可能在 SWF 内具有焦点,但 SWF 在浏览器内没有焦点。为此有多种不同的方法,我在下面提供了一些链接。

Automatically setting swf object focus

Managing initial swf focus in all browsers

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-08
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 2012-11-05
    • 2011-04-28
    • 1970-01-01
    相关资源
    最近更新 更多