Можно ли запустить JavaScript в элементе управления webBrowser без доступа к определенной странице? - PullRequest
1 голос
/ 20 декабря 2011

Я создаю веб-страницу в прямом эфире как вывод для моего приложения.Это означает, что я редактирую текст документа напрямую, а не указываю элемент управления на файл.У меня есть следующий код:

<html>
<head>
<style type = "text/css"> 
.circle {
    position:relative;
    moz-border-radius: 10px;
    -webkit-border-radius: 10px;
    -khtml-border-radius: 10px;
    border-radius: 10px;
    -moz-background-clip: padding;
    -webkit-background-clip: padding-box;
    background-clip: padding-box;
    border: 1px solid #000;

    height: 10px;
    width: 10px;
    background-color:#33FF00;
}
</style>

<script type="text/javascript">
var step = 0;
var color= '#0000FF';
function timer()
{
    var t=setTimeout("switchColor()",125);
}
function switchColor()
{
    if (step == 0) {color='#33FF00';}
    if (step == 1) {color='#33FF00';}
    if (step == 2) {color='#22AA55';}
    if (step == 3) {color='#1155AA';}
    if (step == 4) {color='#0000FF';}
    if (step == 5) {color='#0000FF';}
    if (step == 6) {color='#1155AA';}
    if (step == 7) {color='#22AA55';}
    step = step+1;
    if (step > 7) { step = 0;}

    var elements = document.getElementsByClassName('circle')
    for (var i = 0;i <elements.length;i++)
    {
        elements[i].style.backgroundColor=color;
    }

    timer()
}
</script>

</head>
<body onload="timer()" >
<div id="test" class="circle1"></div>
<div class="circle"></div><div class="circle"></div>
<br>
<br>
</body>
</html>

Этот код затем устанавливается как documentText элемента управления webBrowser с использованием stringBuilder, добавляя каждую строку с функцией StringBuilder.AppendLine (), а затем преобразуя всю stringBuilderв строку.

Я получаю сообщение об ошибке, что функция getElementsByClassName не поддерживается, и ничего не происходит.HTML отлично работает сам по себе.

Ответы [ 3 ]

0 голосов
/ 20 декабря 2011

В качестве ответа для вас я предлагаю вам использовать jQuery.Он может найти элементы, которые имеют определенный класс и прекрасно работает в IE.В частности, посмотрите на селектор класса.

www.jquery.com

http://api.jquery.com/class-selector/

0 голосов
/ 20 декабря 2011

Вам нужно будет использовать getElementsByTagName ('*'), выполнить итерацию по списку и проверить, есть ли у каждого элемента желаемое имя класса.

0 голосов
/ 20 декабря 2011

Элемент управления WebBrowser может запускать JavaScript в режиме реального времени, но имеет те же ограничения, что и Internet Explorer. Любые команды, используемые в элементе управления, должны запускаться в Internet Explorer на соответствующем компьютере.

...