3

わかりました、私はここで気が狂います。画像を表示する基本的なポップアップ ウィンドウを実装しようとしています。私の JavaScript コードが onclick プロパティを含む HTML タグで完全に指定されている場合、ウィンドウは正しくポップアップします。HTML ドキュメントの先頭にあるスクリプト タグまたは別の js ファイルから IDENTICAL JavaScript コードが呼び出された場合、リンク (または私の場合は画像) はポップアップではなく、同じウィンドウで開きます。<フラストレーション>

これにより、ポップアップが開きます。

<a href="test.jpg" onclick="window.open('test.jpg','test_name','width=500,height=500,scrollbars=no'); return false">test_name</a>


これはポップアップを開きません:

function cleanPopup(url, title) {
window.open(url, title, 'width=500,height=500,scrollbars=no');
return false;
}

<a href="test.jpg" onclick="return cleanPopup('test.jpg', 'test_name')">test_name</a>


どんな助けでも大歓迎です。

PS: Chrome と Firefox でテスト済みです。

編集:

私の問題を発見しました。元々、head タグで js ファイルを呼び出すだけでした。テンプレート ツール (私の場合は Template Toolkit) の複数のスクリプトを使用して作成された div のレイヤーについて何かがあり、 head 要素内の元のスクリプト要素がより深い子要素から見えないように見えます。

何が起こっているのか正確にはわかりませんし、それを調べる時間もありません。他の人が同様の問題を抱えていて、何らかの形でこのスレッドに出くわした場合に備えて、この編集を追加しました. 誰かがこの現象を理解し、説明できる場合は、お願いします。

編集2:

window.open メソッドの「name」パラメータには、ポップアップが IE で機能するためのスペースを含めることはできません。ありがとうございます。

4

5 に答える 5

3

デモはこちら

このコードは、私の意見では誰にでもできるものに最も近いものです。

でテスト済み

  • Windows-Fx、Chrome、IE8、Safari
  • iPhone:モバイルサファリ
  1. ターゲットを追加すると、許可されている場合はリンクが新しいウィンドウまたはタブで開きます(スクリプトが何らかの理由で失敗した場合)。これはSIDE-EFFECTであり、有用ですが、質問に対する答えではありません。
  2. window.openが失敗した場合にtrueを返すと、クリックもリンクをたどり、ターゲットを呼び出すことができます-一部のブラウザーはターゲットに反応しなくなることに注意してください。
  3. 3番目のパラメーターの高さ(および幅)は、ブラウザーがタブですべての新しいウィンドウを開くように設定されていない限り、新しいタブではなく新しいウィンドウで開くことを強制します
<html>
<head>
<script type="text/javascript">
window.onload=function() {
 document.getElementById('popup').onclick=function() {
   var w = window.open(this.href, this.target, 
       'width=500,height=500,scrollbars=no');
    return (!w); // opens in new window/tab if allowed
  }
}
</script>
</head>
<body>

<a id="popup" href="test.jpg" target="test_name">test_name</a>
</body>
</html>
于 2012-04-10T11:01:19.230 に答える
1

target="_blank" を使用

<a href="whatever" target="_blank"> ...

HTMLから、または

window.open(url, '_blank', options)

JavaScript から

于 2012-04-10T10:17:58.457 に答える
-1

これを試して

function mypopup()
{
    mywindow = window.open("http://www.test.com", "mywindow", "location=1,status=1,scrollbars=1,  width=100,height=100");
}
于 2012-04-10T10:20:21.890 に答える
-2

JavaScriptコードをHeadブロックに配置してください

<head>
<script type="text/javascript" language="JavaScript">
function cleanPopup(url, title) {
    window.open(url, title, 'width=500,height=500,scrollbars=no');
    return false;
}
</script>

そして体内で:

<a href="" onclick="cleanPopup('test.jpg','test_name')">test_name</a>

FirefoxとIEの両方で問題なく動作します

于 2012-04-10T10:28:45.957 に答える