2011-12-20 9 views
1

私は自分のアプリケーションの出力としてウェブページを構築しています。これは、コントロールをファイルにポイントするのではなく、直接ドキュメントのテキストを編集していることを意味します。特定のページにアクセスせずにWebBrowserコントロール内でJavaScriptを実行することはできますか?

<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.AppendLine()関数との各ラインを追加すること、のStringBuilderを使用して、WebBrowserコントロールのdocumentTextとして設定され、その後に全体のStringBuilderに変換されていることを私には、以下のコードを有します文字列。

getElementsByClassName関数がサポートされていないというエラーが表示され、何も起こりません。 htmlは完璧に動作します。

+0

空のhtmlページにコードをコピーしてIEで表示すると、エラーが表示されます。オブジェクトはこのプロパティまたはメソッドをサポートしていません。 41行目はGetElementsByClassNameの行です。それがIEで動作しない場合、WebBrowserControlでは動作しません。 –

+0

Internet Explorerでエラーは発生しませんが、コードはFirefoxと同様に機能しません。そこに解決策はありますか? –

+0

私の理解では、WebBrowserControlはIEエンジンを使用するので、IEで動作させるだけです。 –

答えて

0

WebBrowserコントロールはjavascriptを実行できますが、Internet Explorerと同じ制限があります。コントロール内で使用されるコマンドは、関連するマシン上のInternet Explorerで実行できる必要があります。

0

あなたの答えとして、私はあなたがjQueryを使うことを提案します。特定のクラスを持ち、IEでうまく動作する要素を見つけることができます。具体的にはクラスセレクタを見てください。

www.jquery.com

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

0

You'll、getElementsByTagNameのを( '*')を使用してリストを反復処理し、各アイテムが所望のクラス名を持っているかどうかを確認する必要があります。

関連する問題