2013-05-07 99 views
0

我需要的就像How can I open a link in the default web browser from an HTA?,但限制条件是链接位于iframe内。如何在默认浏览器中从hta打开iframe中的链接

iframe的加载页面在我们的服务器。

想法:可以检测到iframe的重定向&,那么我们将运行代码,如https://stackoverflow.com/a/185581/66372。怎么样?

更新1 要明确:我们正在努力解决的问题是,当用户点击任何链接,它在默认浏览器中打开。

类似于mplungjan的答案的一个选项是捕获iframe DOM中所有链接的点击事件。是否有更通用的选项可用于iframe,文档或正文级别? (因此还与延迟加载和任何其他技巧)

+0

http://support.microsoft.com/kb/224816 – mplungjan 2013-05-07 11:31:06

+0

@mplungjan感谢您的链接,但这就像在链接的问题。问题在于iframe中的链接。 – eglasius 2013-05-07 11:35:41

+0

所以先抓住hta中的链接。将页面加载到HTA中的iframe中,获取链接,然后用它触发浏览器 – mplungjan 2013-05-07 11:37:34

回答

2

这样的事情,这应该被允许完全在HTA已提升的权限

window.onload=function() { 
    window.frames["iframe_in_this_document"].onload=function() { 
    var links = this.document.getElementsByTagName("a"); 
    for (var i=0;i<links.length;i++) { 
     url = links[i].href; 
     if (url) links[i].onclick=function() { 
     var shell = new ActiveXObject("WScript.Shell"); 
     shell.run(this.href); 
     return false; 
     } 
    } 
} 
+0

谢谢,不完全是我想要的,但它指出了一个有效的解决方案。如果有人知道更通用的解决方案,请更新该问题。 – eglasius 2013-05-07 11:52:15

+0

查看更新。它会触发页面加载的任何链接。如果你想尝试并发现延迟加载,请使用setTimeout – mplungjan 2013-05-07 11:55:21

+0

谢谢,这样做的诀窍是将页面上的所有延迟加载都拿出来。我遇到了试图以这种方式挂接onload的问题(甚至尝试过attachEvent),但只能通过在iframe中设置它来实现:onload =“iframeLoaded();”。请注意,即使这不起作用:onload =“iframeLoaded”。也许这个函数应该有一些争论? (虽然我没有得到任何错误)。 – eglasius 2013-05-08 16:53:20

相关问题