2017-02-12 4 views
0

以下のコードがあります。それは6行目のウィンドウを開こうとしますが、読み込みを続けます(タイトルバーの処理はウィンドウに空白の内容が表示されます)。私は、デバッガでコードをステップと私はJavaScript window.open()はすぐにウィンドウを読み込まない

Uncaught TypeError: Cannot read property '0' of null on line 9.

をエラー与えて、ウィンドウが最後にロードし、9行目の実行を完了した10行に移動するとwindow.open()がすぐに完全な負荷Webページをしない理由を私は得ることはありませんwindow.open()となぜそれは常に完全なロード私は、オンラインでの提案を読んだ後、私は6行が、同じ動作の後に、次のを入れて9

var pageURL='url'; 
var w=500; 
var h=500; 
var left = (screen.width/2)-(w/2); 
var top = (screen.height/2)-(h/2); 
var targetWin = window.open (pageURL, "_blank",'toolbar=no, location=no,directories=no, status=no, menubar=no, scrollbars=yes, resizable=no, copyhistory=no, width='+w+', height='+h+', top='+top+', left='+left); 
var windowStr = targetWin.document.documentElement.innerHTML; 
var divMatch = windowStr.match(/someregex/); 
console.log(divMatch[0]); 

ラインを通過する際に!!!

targetWin.document.close(); 

ここでは何が起こっていますか?私はChromeでデバッグしています。

+0

私はこれがコードを動作させていない可能性があることを知っています...しかし、まだ人々の経験は話すことができます...そして本当にダミーコードが必要な場合...それから私はそれを準備しなければなりません同じ動作をするかどうかを確認してください。しかし、ダミーコードが投票の前に絶対に必要であることを尋ねてください。 – anir

+0

@wOxxOmもっと説明できますか?それがCORSに関するものならば、それはまったく読み込まれてはいけません。 – anir

答えて

3

I don't get why window.open() does not complete loading webpage immediately

window.openが asyncronous あるためです。ウィンドウの内容を取得するには、ウィンドウが読み込まれるまで待つ必要があります。 MDNから

:あなたはloadイベントを待つことができ

Note that remote URLs won't load immediately. When window.open() returns, the window always contains about:blank . The actual fetching of the URL is deferred and starts after the current script block finishes executing. The window creation and the loading of the referenced resource are done asynchronously.

var targetWin = window.open (...); 
targetWin.addEventListener('load', function() { 
    // Continue doing stuff here. 
}); 

代わりに、あなたはDOMContentLoadedイベントを待つかもしれません。

また、これはsame-origin policyを尊重した場合にのみ行うことができます。