13

window.open 関数が完全にロードされた後、関数を呼び出そうとしています。

ただし、onload 関数を使用するとすぐに呼び出されます。ヒットした URL から Excel スプレッドシートが開き、ダウンロードに 2 秒から 1 分かかる場合があります。

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

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

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

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

1 に答える 1

5

最初に、クロスドメイン制限のためにブロックされることなく(またはサーバー上のCORSヘッダーをパラメーター化する必要なしに)これを行うには、次のことを行う必要があることに注意してください。

  • メインページとポップアップコンテンツ(Excelファイル)の両方を同じドメインと同じポートから提供します
  • メインページを開くのhttp://ではなくで開くfile://

これらの条件が尊重される場合、最良の解決策は、ロード関数が「画像などのすべてのアセットが完全に受信されるまで」待機するため、jqueryを使用することです。

<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>

グローバルスキームに注意してください。各ブラウザ/構成は、ファイルを「開く」と思うと、何か異なることをする可能性があります。open彼らがそれを却下することを決定したかどうか、適切なプラグインを持っていなかった、単にそれをダウンロードしたかどうかを簡単に検出する方法はありません。

于 2012-05-29T11:18:21.530 に答える