2016-04-15 7 views
1

私はこの機能を備えたIEに特有の問題抱えている:私は、ハイパーリンクからPDFファイルをダウンロードするためにこれを使用し、この機能は完璧に動作Chromeで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"); 
} 

を。エラーはなく、ただコンソールに投稿されます。

いくつかの追加コードはありますか?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は「ダウンロード」属性のみ、新しいブラウザすなわちをサポートしていません参照してください、それがどのように動作するかです。エッジ、古いブラウザで新しい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"'); 
    } 
関連する問題