【问题标题】:How to open a link inside an iframe from a hta in the default browser如何在默认浏览器中从 hta 打开 iframe 内的链接
【发布时间】:2013-05-01 07:47:44
【问题描述】:

我需要的就像How can I open a link in the default web browser from an HTA?,但限制是链接位于 iframe 内。

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

想法:可以检测和阻止 iframe 的重定向,那么我们将运行类似https://stackoverflow.com/a/185581/66372 中的代码。怎么样?

更新 1 明确一点:我们试图解决的问题是,当用户点击任何链接时,它会在默认浏览器中打开。

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

【问题讨论】:

  • @mplungjan 感谢您的链接,但这就像在链接的问题中一样。问题是链接在 iframe 内。
  • 所以先抓取hta中的链接。将页面加载到 HTA 中的 iframe 中,抓取链接,然后用它触发浏览器

标签: javascript iframe browser hta


【解决方案1】:

这样的事情,在具有提升权限的 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;
      }
   }  
}

【讨论】:

  • 谢谢,不是我想要的,但它指出了一个有效的解决方案。更新问题以防有人知道更通用的解决方案。
  • 查看更新。它将在页面 onload 中加载的任何链接上触发。如果您想尝试捕获延迟加载,请使用 setTimeout
  • 谢谢,成功了,消除了页面上的所有延迟加载。我确实遇到了尝试以这种方式挂钩 onload 的问题(甚至尝试过 attachEvent),但只能通过在 iframe 中设置它来做到这一点:onload="iframeLoaded();"。请注意,即使这也不起作用:onload="iframeLoaded"。也许这个函数应该有一些论据? (不过我没有错误)。
猜你喜欢
  • 2010-09-16
  • 2015-08-21
  • 2012-08-11
  • 1970-01-01
  • 2021-09-16
  • 2012-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多