2016-04-26 11 views
18

他の人のウェブページ内でいくつかのアクションをトリガーする必要があります。私はこれまでのところ、このコードを持っている:ウェブページのダイアログウィンドウを閉じる

IHTMLElementCollection DeleteCollection = 
    (IHTMLElementCollection)myDoc.getElementsByTagName("a"); 

foreach (HTMLAnchorElement buttonDelete in DeleteCollection){ 
    if (buttonDelete.title != null && buttonDelete.title.StartsWith("Delete")){ 
     buttonDelete.click(); 
      // problem goes here 
     myDoc.activeElement.click(); 
     SendKeys.Send("{ENTER}"); 
    } 
} 

このダイアログがポップアップ表示さ:

enter image description here

私はmyDoc.activeElement.click();SendKeys.Send("{ENTER}");を試みたが、ダイアログがページの外のようですので、私は知りませんOKボタンのトリガー方法どうすれば窓を閉じることができますか?

答えて

13

プログラムでブラウザダイアログを閉じることはできません。あなたができることは、ブラウザポップアップの動作を乗っ取ることです。これはあなたのために働くかもしれません:

window.confirm=function(){ return true; }; 
window.alert=function(){ return true; }; 
window.prompt=function(){ return "textOfMyChoice"; }; 

ボタンをクリックする前に、このjavascriptを挿入します。後でポップアップの動作を復元する場合は、別のグローバル変数に格納します。

+1

ニース! ...それは 'ie.Navigate(" javascript:(function(){window.confirm = function(){return true}})() ")'そして 'anchor.click();'と一緒に働いた –

+0

私は考えましたそれは動作します。 「ウェブページ上のダイアログウィンドウを閉じる」という質問に対する答えではなく、「ウェブページ上のポップアップダイアロンの防止」への回答 –

+0

本当にシンプルで印象的な!! ..私は 'confirm'と' window'オブジェクト上にあることは一度も言及していませんでした –

0

例のアンカータグには、javascriptネイティブの確認ダイアログがあるとします。 このダイアログをプログラムで閉じることはありません。

しかし、すべてのアンカー要素のjavascriptを変更し、カスタムjQueryダイアログで確認ダイアログを代用することができます。

だから

<a href="..." onclick="return openMyjQueryDialog('are you sure?')" ... >...</a> 

<a href="..." onclick="return confirm('are you sure?')" ... >...</a> 

を変換し、ユーザーは、通常の動作を続けることができ、タイムアウトなどなどを設定し、近い非表示:この方法は、このダイアログ上の完全な制御を持つことができますスクリプトはすべてのダイアログ要素を完全に制御できます。

+0

他人のウェブページ内のコンテンツをどのように更新するのですか?また、彼はjQueryについて言及しなかった –

関連する問題