2016-05-24 4 views
0

ロード後に新しいウィンドウでリンクを開く方法はありますか?Javascriptをロードした後に開いたウィンドウを閉じるにはどうしたらいいですか?

私はこれら2つの方法を試しましたが、ウィンドウは閉じません。

方法1:

var winning = window.open("https://google.com/","","width=500,height=500"); 
winning.onload = function(){ 
    winning.close(); 
}: 

方法2:

var winning = window.open("https://google.com/","","width=500,height=500"); 
winning.addEventListener('onload', function(){ 
    winning.close(); 
}, false); 

私は一種のこの上非常識つもりです。明らかなものがないか、これは単に不可能なのでしょうか?

+0

あなたのイベントリスナーは発砲していますか?コンソールに最初の行としてログオンすると、ログに記録されますか? –

+1

イベントは 'load'で、 'onload'ではありませんか?私はMDNにリストされているオンロードは見ません:https://developer.mozilla.org/en-US/docs/Web/Events –

+0

@StephenCrosby - イベントは、イベントハンドラに直接アクセスするために使用されるプロパティで、 'load'と呼ばれます。それは 'onload'と呼ばれます。 'on 'で始まる接頭辞は標準パターンです。 (方法2の意味で、方法1を見ていました) – Quentin

答えて

2

あなたは同じ同じ起点ポリシーにぶつかっています。異なる起源の文書でloadのイベントをキャプチャすることはできません。ページが正常に読み込まれたことを示します。「このサイトにログインした場合は、禁止されたエラーが発生します。

JavaScriptを表示するページと同じ起源のURLに変更すると、そのURLは機能します。

最も近いのは、文書をロードするのにどれくらいの時間がかかるかを推定し、それを閉じるためにsetTimeoutを使用することです。

+0

@epascarello私は 'setTimeout'でウィンドウを閉じることができました。気にしないで!私はハッキーなやり方でそれをやったことに気づいた。空白のウィンドウを開き、私が望むリンクに位置を変更しました。 – Jerry

0

あなた別のウィンドウにイベントリスナーを添付することができますが、のみ両方のウィンドウが同じドメイン/プロトコル/ポート上にある場合。

Same-Origin Policyあなたは、クロスオリジンにアクセスできるプロパティとイベントを制限し、(あなたが聞くことができる、それが所有していますのloadイベントを発生)iframeとは異なり、あなたがない限りwindow.openで作成されたウィンドウにloadイベントリスナーをアタッチすることはできません彼らは同一起点ポリシーを満たす。


また、サイドノートで、これはタイプミスです:

winning.addEventListener('onload', function(){ 

であるべき:

winning.addEventListener('load', function(){ 

addEventListenerを使用するときはon接頭辞が含まれていません。

関連する問題