Диалоговое окно JQuery, отображаемое по мере загрузки страницы

Непонятно, с какого элемента вы начинаете поиск, но у вас есть два элемента с этим именем. Один из них - это элемент управления со списком, другой - элемент управления редактированием. Попробуйте использовать AndCondition для объединения нескольких объектов PropertyCondition:

var nameCondition = new PropertyCondition(AutomationElement.NameProperty, "Search or enter address");
var controlCondition = new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Edit);
var condition = new AndCondition(nameCondition, controlCondition);
AutomationElement editBox = element.FindFirst(TreeScope.Subtree, condition);
// use ValuePattern to get the value

Если поиск начинается с поля со списком, вы можете вместо этого изменить TreeScope.Subtree на TreeScope.Descendants, поскольку Subtree включает текущий элемент в поиск.

30
задан Kevin Won 9 April 2010 в 00:26
поделиться

2 ответа

Вы можете добавить css, чтобы он по умолчанию был скрыт, код загрузки не требуется:

#myDialog { display: none; }

При этом никакой другой код не нужен, когда вы откроете диалоговое окно, он изменит этот стиль ... так что ничего дополнительного для запуска на document.ready. В качестве альтернативы, если у вас много диалогов, дайте ему класс, например:

<div id="myDialog" class="dialog"></div>

С этим CSS:

.dialog { display: none; }

Почти во всех случаях, jQuery использует атрибут стиля display для скрытия вещей, поэтому использование этого для первоначального скрытия чего-либо будет работать с тем, что вы хотите использовать элемент позже, будь то диалоговое окно, простой .fadeIn() и т. Д.

48
ответ дан 28 November 2019 в 00:01
поделиться

Я предложил решение этой проблемы, которое работает нормально, но мне интересно, знает ли кто-нибудь лучший способ.

Проблема в том, что браузер визуализирует DOM по мере его загрузки, а затем запускает JQuery .js в конце, который его скрывает. Итак, что я делаю, это отключаю видимость в родительском теге

, чтобы все содержимое диалогового окна было скрыто по умолчанию, а затем превращаю этот родительский тег
в .js.

<div id="bodyDiv" style="visibility:hidden"> 
    <div id = "myDialog">
        <!-- ... more html in here for the dialog -->
    </div>
</div>

, затем JQuery .js:

<script type="text/javascript">

$(document).ready(function() {
    //turn the visibility on last thing
    $("#bodyDiv").attr("style", "visibility:visible");
});
</script>

, как вы можете видеть, я просто по умолчанию отключил видимость всего, чтобы страница отображалась без отображения содержимого диалогового окна, затем я снова включаю видимость. Это не идеальное решение, потому что оно может заставить страницу вести себя забавно на секунду, но, по крайней мере, диалоговое окно HTML не отображается в строке. UX с этим исправлением приемлем, хотя и не идеален.

0
ответ дан 28 November 2019 в 00:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: