2013-05-07 118 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

相關問題