是否可以在webBrowser控件中运行JavaScript而无需访问特定页面?

时间:2011-12-20 17:05:37

标签: c# html browser webbrowser-control stringbuilder

我正在构建一个网页,作为我的应用程序的输出。这意味着我直接编辑文档文本,而不是将控件指向文件。我有以下代码:

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

然后使用stringBuilder将该代码设置为webBrowser控件的documentText,使用StringBuilder.AppendLine()函数添加每一行,然后将整个stringBuilder转换为字符串。

我得到了不支持getElementsByClassName函数的错误,没有任何反应。 html完全独立运行。

3 个答案:

答案 0 :(得分:0)

WebBrowser Control可以实时运行javascript,但它与Internet Explorer具有相同的限制。控件中使用的任何命令都需要能够在关联计算机上的Internet Explorer中运行。

答案 1 :(得分:0)

作为对你的回答,我建议你使用jQuery。它可以找到具有特定类的元素,并且在IE中运行良好。具体来看一下类选择器。

www.jquery.com

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

答案 2 :(得分:0)

您需要使用getElementsByTagName('*'),遍历列表并验证每个项目是否具有所需的className。