2016-04-15 71 views
1

我有特定於IE瀏覽器使用此功能的一個問題:如何以編程方式點擊IE中的鏈接?

function downloadFileFromUserControl(filename) { 
    var name = filename.split("/"); 
    var fName = name[name.length - 1]; 
    console.log("IE speaking, I'm just going to take a little nap during this request"); 
    var link = document.createElement('a'); 
    link.download = fName; 
    link.href = filename; 
    link.click(); 
    console.log("Oh, I'm late to the party?? Back to sleep I guess"); 
} 

在Chrome功能完美的作品,我用它來從超鏈接下載PDF文件。沒有錯誤,它只會發佈到控制檯。

是否有一些額外的代碼IE需要使這項工作?謝謝

+0

究竟是一個什麼錯?你有錯誤嗎? –

+3

如果需要將IE中的DOM元素插入到DOM中以處理點擊事件,或者需要執行像'setTimeout(function(){link.click()}這樣的點擊操作, 20);'或兩者兼而有之。 – jfriend00

+0

它確實運行該功能,但沒有錯誤。它只是發佈到控制檯 –

回答

0

元素創建後,使用element.appendChild()element.insertBefore()方法將其插入到document

它是如何工作的,請參閱w3c reference

+1

嘗試這給我一個腳本層次結構錯誤。這種情況有點類似於我的:http://stackoverflow.com/questions/23071968/jquery-throws-script5022-hierarchyrequesterror-when-attempted-to-append-a-jquer。這是一個webforms應用程序(這是維護,讓我一個人!)。這個JS功能在我的'主'頁面上。該函數正從用戶控件(.ascx)文件中調用。 –

+0

好吧,您是否嘗試過您提及的類似問題中提供的解決方案 –

0

IE不支持「下載」屬性只有新版瀏覽器IE瀏覽器。緣,你要小心,在舊的瀏覽器使用新的HTML5功能,大部分時間您需要添加一些「備用」的這種特殊情況下,我會建議:

if (typeof link.download !== typeof undefined && link.download !== false) { 
     var message = document.getElementById('Some <Span> ID Here').innerHTML('Right-click and select "Download Linked File"'); 
    } 
相關問題