2011-08-13 8 views
0

Googleを検索し、jqueryでファイルをダウンロードするためのコードスニペットがあります。構文は次のようになりますjqueryでファイルをダウンロード

var downloadURL = function(url) 
{ 
    var iframe; 
    iframe = document.getElementById("hiddenDownloader"); 
    if (iframe === null) 
    { 
     iframe = document.createElement('iframe'); 
     iframe.id = "hiddenDownloader"; 
     iframe.style.visibility = 'hidden'; 
     document.body.appendChild(iframe); 
    } 
    iframe.src = url; 
} 

しかし、どのように動作するのか理解できませんでした。どのようにそれを呼び出すとURLを渡す方法。上記の関数を使用して、URLを引数として渡す方法を教えてください。上記のコードの種類が関数ではないことも教えてください。

var downloadURL = function(url) 

どのように動作しますか。関数名に等しい変数名。関数を呼び出すことはできますが、上記のコードスニペットを呼び出すことはできません。それで詳細に議論してください。ありがとう。

+1

'上記は関数ではありません。' - 実際は、コードは 'function(url)'の中にラップされています。 – pimvdb

+1

関数 'downloadURL( 'your-url-here')'を呼び出すだけです。それが基本的なJavaScriptです。私はチュートリアルを読むことをお勧めします:https://developer.mozilla.org/ja/JavaScript/Guide/Functions –

+0

私の知る限りでは、ページのコンテンツをURLに保存するのと同じくらい、何もダウンロードしていません。それが関数です。 downloadURL( 'http://foo.com/bar.txt')を呼び出すことができます。 –

答えて

2
前に見たことがあるかもしれませような機能を定義する必要はありませんどこの別の簡単な例

あなたのサンプルコードは、これを行うのと同等です:

function downloadURL(url) 
{ 
    var iframe; 
    iframe = document.getElementById("hiddenDownloader"); 
    if (iframe === null) 
    { 
    iframe = document.createElement('iframe'); 
    iframe.id = "hiddenDownloader"; 
    iframe.style.visibility = 'hidden'; 
    document.body.appendChild(iframe); 
    } 
    iframe.src = url; 
} 

したがって、あなたはcすべての機能をこのよう:

downloadURL('file.txt'); 

さて、関数はページ内のiframe要素を作成し、引数として渡されたURLにアドレスを設定してやっていること、これはブラウザがためにダウンロードダイアログを表示するようになりますそのファイル。

これは明らかです。

+0

この回答は私のニーズに完全に対応しています。しかし、2つの小さなごちそう:1)iframe.style.display = 'none';をiframeに変更または追加します。可視性を設定すると表示は非表示になりますが、ページに表示されているように表示されます。 [W3Schoolsは表示と表示についてリンクしています。](http://www.w3schools.com/css/css_display_visibility.asp) 2)iPhoneのファイルダウンロードが好きではないので、iPhoneアプリ(私の場合はphonegap)でこれをテストする時間を無駄にしないでください...私は今週多くの楽しい時間を無駄にしました... – TheBrockEllis

1

Javascriptは面白い言葉ですが、これは私の意見では最も好ましいものではなく、使用可能な機能を定義するための非常に有効な方法です。あなたがしなければならないのではJavaScriptの関数でこの

downloadURL("http://a-url.com"); 

でこの関数を呼び出すこと

はコールバックとして他の関数に関数を渡すか、または作成することが非常に簡単になり、オブジェクト

のちょうど別のタイプです関数をインラインで呼び出す!いくつかの例!

function aFunc(callback){ 
callback(); 
} 

aFunc(function(){ 
    alert("Hi"); 
}); 
コールバックの非常に単純な例ザッツ

またはインライン関数以下のように

function aFunc(){ 
    (function(someVar){ 
    alert(someVar); 
    })("Hi"); 
} 

ちょうどあなたが

+0

関数は厳密な意味でもオブジェクトです) –

+0

ええ、私の主張はあまりにも議論の余地があると思います:P – Tristan

関連する問題