2012-05-29 13 views
9

window.open関数が完全に読み込まれた後に関数を呼び出そうとしています。Javascript window.openの後に関数を呼び出す

しかし、onload関数を使用することはあまりにも早く呼び出されています。ヒットしたURLはスプレッドシートを開き、ダウンロードには2秒から1分かかります。

window.open関数が呼び出されるとすぐにonload関数が呼び出されています。しかし、URLがヒットしたときではなく、いつExcelのドキュメントが開かれたかを知る必要があります。

私は間隔を設定しようとしたが、それは呼び出されていない:

w = window.open(url,'_parent',false); 

w.onload = function(){ 
    console.log('here'); 
    setInterval(function(){ 
     alert('Hi'); 
    },10); 
+0

子ウィンドウでこれをしないのはなぜですか?そして、Excelファイルを開くコードを共有しても大丈夫だと思うなら、それは大丈夫でしょう - あなたが望む本当のトリガーがファイルロードを上回っているからです。 –

+0

ファイルを開くか、開かれた時を正確に知る? – zaw

+0

私はエクセルファイルが開かれた時を知る必要があるextjsグリッドをこの背後に置いています/ウィンドウはドキュメントを完全にロードしました。これは、Excelファイルを開くために呼び出されるCGIスクリプトです。 – pm13

答えて

4

まずノート理由は、クロスドメインの制限によりブロックされることなく、これを行うために(または上のCORSヘッダをパラメータ化することなく、そのサーバー)は、次のことが必要です

  • があなたのメインページと同じドメインからのポップアップコンテンツ(Excelファイル)、および
  • http://にあなたのメインページを開き、同じポートとの両方にサービスを提供

    <html> 
        <head> 
        <script src="http://code.jquery.com/jquery-latest.js"></script> 
        </head> 
    <body> 
    <script> 
    var popup = window.open('popup.html'); 
    $(popup.document).load(function() { 
        alert('loaded'); 
        // do other things 
    }); 
    </script> 
    </body> 
    </html> 
    

    を持つように注意してください:これらの条件が尊重されている場合file://

に、最善の解決策は、「画像などすべての資産が完全に受信されるまで、」そのload機能が待機してjqueryのを使用することではありませんあなたのグローバルスキーム:それぞれのブラウザ/設定は、ファイルを "開いた"と思うと、何か違うことをするかもしれません。単純なopenで検出する方法はありませんが、それを却下した場合、適切なプラグインを持っていない場合は単にダウンロードしてください。

+0

corsヘッダがウィンドウの起点をバイパスできるかどうかわかりません。 – user2284570

関連する問題