OK、PHP スクリプト内から新しいウィンドウを開きたいので、JS をそのままエコーします。
echo "<script type='text/javascript'>window.open('".configController::$BASE_URL."/view/share.php?u=".$url."');</script>";
ユーザーが対話できる通常のウィンドウを開きたいだけですが...メニューバーやステータスなどのない、病弱なガゼルのようなウィンドウが表示されます。これは純粋なポップアップ( icky )です。
オープン設定を提供してすべてのオプションを有効にしようとしましたが、まだ機能のないウィンドウが表示されます。
オプションを有効にしたPHPは次のとおりです。
echo "<script type='text/javascript'>window.open('".configController::$BASE_URL."/view/share.php?u=".$url."',' Share','toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,copyhistory=yes,resizable=yes');</script>";
生成される JS は次のとおりです。
<script type='text/javascript'>
window.open('http://localhost:8888/lks/view/share.php?u=www.yahoo.com',' Share','toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,copyhistory=yes,resizable=yes');
</script>
ボタンのクリックから window.open('url here') を使用すると、必要なことが実行されます...違いは何ですか? そして...どうすれば普通のウィンドウを開くことができますか?
編集:
さらに深く潜る.... このページをまとめました。onLoad イベントは、不自由なウィンドウを開きます... Click Me をクリックすると、適切にウィンドウが開きます。
<html>
<head>
<script type='text/javascript'>
function popit(){
//window.open('http://www.yahoo.com','_blank');
window.open('http://www.yahoo.com','Share','toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,history=yes,resizable=yes');
}
</script>
</head>
<body onload="popit()">
<a href="#" onclick="popit();">CLICK ME</a>
</body>
</html>
編集2:
これを見つけました。1990 年代に多くの人が JS を悪用することを決めたため、ブラウザーの動作がおかしいと思います... アイデアは、共有中にユーザー エクスペリエンスを中断しないようにすることでしたが、使用する必要があるようです同じウィンドウに移動し、完了したら元の URL にリダイレクトします。
chrome および safari の onload イベントにアタッチすると、window.open が機能しない
編集 3: 数 年後、これが重複した質問ではないことを明確にする必要があります。元の質問は、当時は PHP だったバックエンド スクリプトからの window.open に関するものでした。何かを重複としてマークするときは、主題全体にハンマーを落としていると考えてください。別の S/O 回答にリンクしているからといって、残りの資料を破棄できるわけではありません。