2012-04-10 9 views
2

ここではナッツをしています。私は画像を表示するための基本的なポップアップウィンドウを実装しようとしています。私のjavascriptコードがonclickプロパティを持つHTMLタグで完全に指定されていると、ウィンドウが正しくポップアップします。 IDENTICALのjavascriptコードがHTMLドキュメントの先頭にあるscriptタグか別のjsファイルから呼び出された場合、リンク(または私の場合はイメージ)がポップアップではなく同じウィンドウで開きます。これは、ポップアップを開くJavascriptのwindow.open関数が矛盾していて、予期したときにポップアップを開けません。

<不満>:これは、ポップアップを開きません

<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要素のレイヤについては、ヘッド要素内の元のスクリプト要素をより深い子要素には見えないように見えます。

私は何が起こっているのか分かりません。私はそれを探索する時間がありません。他の人が同様の問題を抱えていて、どういうわけかこのスレッド全体でつまずく場合に備えて、この編集を追加しました。誰かがこの現象を理解し、それを説明することができれば、してください。

EDIT 2:

window.openメソッドの「名前」パラメータは、IEで動作するように、ポップアップのためにスペースを含めることはできません。ありがとうM $。

+1

私のためにポップアップが開きます。ブラウザのJavaScriptコンソールを確認してください。どこかに構文エラーがあると思います。 –

+0

私はこれをIE9、IE7-8(IE9 DevToolsから)の標準ドキュメントモードでテストしました。私はFireFox、Chrome、Safari、Operaの最終版でこれをテストしています。すべて正常に動作します。より完全な例を示す必要があるかもしれません。 –

+1

構文エラーはありませんが、ポップアップブロッカーがある場合、スクリプトが失敗し、URLが単に続きます。 – mplungjan

答えて

3

DEMO HERE

で何の問題もなく私のために働きます

このコードは、あなたが私の意見で得ることができる、foolproofに一番近いものです。

  • Windows上でテストさ

    - Fxの、クローム、IE8とSafari

  • iPhone:モバイルSafariの
  1. がターゲットを追加すると、新しいウィンドウでリンクがオープンになりかタブが許可されていれば - スクリプトが何らかの理由で失敗した場合 - これは有用であるが質問に対する答えではない副作用である。
  2. window.openが失敗した場合にtrueを返すと、リンクをたどってターゲットが呼び出されます。一部のブラウザはターゲットに反応しないことに注意してください。ブラウザはタブ
<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> 
+1

はい、あなたは正しいです。いい答え。 – Dhruvisha

+0

私のコードでは動作しません。ポップアップウィンドウではなく新しいタブを開きます。素晴らしい。同じブラウザのウィンドウで別のタブにあなたのデモをしようとしていますが、それは動作します(ポップアップウィンドウが開きます)。ブラウザの視点からソースコードを見ると、hrefの内容と他のhtmlを除いて、すべてが同じように見えます。ポップアップウィンドウを開こうとする努力を否定するコードベースのどこかにhtmlがありますか?私は完全に困惑している。 – s2cuts

+0

自分のページを見てテストする必要があります。あなたがここに投稿したくない場合、私のメールは私のプロフィールにあります。 – mplungjan

1

使用ターゲット= "_ブランク"

<a href="whatever" target="_blank"> ... 
HTMLから

、またはJavaScriptから

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

+0

@mplungjan私はそれが関連していると思います。 '_blank'を指定しないと、既存のウィンドウ(指定された名前で開かれたウィンドウ)を上書きする可能性があります。 – jlb

+0

質問者の問題に関連するSORTです。上書きの可能性があるからではなく、スクリプトの失敗がクリックをリンクに従わせるためです。したがって、ターゲットを追加すると、同じウィンドウ内でリンクを開かないようにする効果があります。 もう一つの理由として言えば、問題が残っていれば、var target = "x" + new Date()。getTime()を使って、ランダムであるが識別可能なターゲットを持つことが可能です。多くのブラウザでwindow.openのパラメータにスペースを使用することはできません。 – mplungjan

-1

は、必ずあなたのjavascripを入れてください。この

function mypopup() 
{ 
    mywindow = window.open("http://www.test.com", "mywindow", "location=1,status=1,scrollbars=1, width=100,height=100"); 
} 
+0

また、= 1を省略することができます – mplungjan

-2

を試してみてくださいTコードヘッドブロック

<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

+0

falseをonclickハンドラに戻す必要がありますので、 'onclick =" return cleanPopup(...) "' – mplungjan

+0

はい、正しいです。デフォルトのイベントアクションが行うようにfalseを返す必要があります起こらない(この場合、URLに続く)。私はそれを逃した悪いFF(またクロム)は常にスマートにしようとするので、彼らは空白のURLに従っていない: - /。それを指摘してくれてありがとう。 – sowrov

0

内のすべての新しいウィンドウを開くように設定されていない限り、第三のパラメータで

  • 高さ(幅)は、新しいウィンドウで開くのではなく、新しいタブを施行します

    if(title=='random') 
    { 
    title = randomID(); 
    } 
    

    onclick="PopupCenter(this.href,'random','600','700','yes'); return false;" 
    

    ランダムおよび機能で新しいウィンドウタイトルを作ります10

  • 関連する問題