0


次のコードがフィルタリング選択に焦点を当てていないのはなぜですか?

    <!DOCTYPE html>
    <html>
    <head>
    <script type="text/javascript" src="http://yandex.st/dojo/1.6.0/dojo/dojo.xd.js" djConfig="parseOnLoad: true"></script>
    <style type="text/css">
            @import "http://yandex.st/dojo/1.6.0/dijit/themes/claro/claro.css";
    </style>
    <script type="text/javascript">
    <!--
    dojo.require("dijit.form.FilteringSelect");

    dojo.addOnLoad(function(){
        dijit.byId('dept').focus();
    });

    -->
    </script>
    </head>
    <body class="claro">
    <select name="dept" id="dept" dojoType="dijit.form.FilteringSelect" >
        <option value=""></option>
        <option value="test">test</option>
        <option value="test1">test1</option>
    </select>
    </body>
    </html>

ie7 と firefox 3/4 で試してみました - 動作します。
しかし ie8 では失敗します :-(
これは道場のバグかもしれません - それとも私が何か間違ったことをしていますか?
dojo.addOnLoad() はいつ起動しますか? DOM の準備が整った後、またはすべてのウィジェットが適切に初期化された後ですか?
gerhard
について

4

2 に答える 2

0

どのブラウザがこれを完全にサポートしているかはわかりませんが、試してみてください:

<select name="dept" id="dept" dojoType="dijit.form.FilteringSelect" autofocus>

Importまた、リンクタグだけを使用できるのに、なぜステートメントを使用しているのかわかりません

<style type="text/css">
    @import "http://yandex.st/dojo/1.6.0/dijit/themes/claro/claro.css";
</style>

後:

<link rel="stylesheet" type="text/css" href="http://yandex.st/dojo/1.6.0/dijit/themes/claro/claro.css"> 
于 2011-04-12T14:43:44.653 に答える
0

それは非常に興味深いバグです..私は小さな調査を行い、解決策を見つけました。「汚いハック」のように見えるかもしれませんが、それでも役に立ちます。

タイムアウトを追加するだけです:

dojo.addOnLoad(function () {
        setTimeout(function () { dijit.byId('dept').focus() }, 400);
});

ユーザーには気付かれませんが、IE に一息つきます。

それは私にとってIE8で動作します

于 2011-04-12T21:06:08.027 に答える