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 错误 - 还是我做错了什么?
dojo.addOnLoad() 什么时候触发?在 DOM 准备好之后,或者在所有小部件都正确初始化之后?
关于
格哈德

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 回答