2016-04-26 77 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

真的很簡單和令人印象深刻! ..我從來沒有注意到'確認',這些方法在'窗口'對象 – 2016-05-06 15:14:01

0

我想,在你的例子中的任何錨標記都有一個JavaScript本地確認對話框。 您不以編程方式關閉此對話框。

但是,您可以更改所有錨點元素的JavaScript,並用您的自定義jQuery對話框替換確認對話框。這種方式讓你有完全控制該對話框中:關閉,隱藏,設置超時等等等等

變換

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

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

因此,用戶可以用正常的行爲繼續下去,你的腳本可以完全控制所有的對話框元素。

+0

他將如何更新_someone其他網頁內的內容?另外,他沒有提到jQuery – 2016-05-06 15:12:32