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