2011-09-01 12 views
2

誰かが私のコードで何が間違っているのを見ることができますか?それはIEで正常に動作しますが、firefox 6はjavascript window.open呼び出しに渡す高さや幅の設定を無視しているようです。明らかに間違っているものは何も見えませんが、javascriptは私の最初の言語ではありませんので、どこかでnoobエラーが発生している可能性があります。Firefox 6でjavascript window.openの高さ、幅、上端、および左端の設定が無視されるのはなぜですか?

この機能の目的は、画面を中心に800x600のウィンドウを開き、IEブラウザとMozillaファミリブラウザの両方でモーダルモードで表示することです。

<html> 
<head> 

<script language="javascript" type="text/javascript"> 
    function openWindow(pageURL,Title,w,h) 
    { 
     var left = (screen.width/2)-(w/2); 
     var top = (screen.height/2)-(h/2); 
     if (window.showModalDialog) { 
      window.showModalDialog(pageURL,Title,'dialogWidth:' + w  + 'px,dialogHeight:'+ h + 'px,dialogTop:'+ top + 'px,dialogLeft:' + left + ',resizable=no'); 
     } else { 
      window.open(pageURL,Title,"toolbar=no, location=no, directories=no,  status=no, menubar=no, scrollbars=yes,resizable=no,modal=yes,  copyhistory=no,width=" + w + ", height=" + h + ", top=" + top + ", left=" + left) 
     } 
    } 

</script> 
</head> 
<body> 
<a href="javascript:openWindow('http://www.google.com','Google',800,600);">Launch</a> 
</body> 
</html> 

ビットを明確にするために、関数はShowModalDialogの存在をテストするために設計されただけで(IEのみがそれをサポートすると仮定)とW3C window.openをサポートし、すべてで適切window.openの枝に落ちます"モーダル"オプションを実装するコマンド。その考え方は、ShowModalDialogが実装されていれば、そうでなければwindow.openを "Modal"オプションと共に使用するということです。

+0

は 'showModalDialog'は基本的にこれだけIEがそのコードパスに陥るだろうと仮定して、今、すべてのブラウザでサポートされては悪い仮定です。 –

答えて

4

セミコロン、showModalDialogではないカンマ、:

<html> 
<head> 

<script language="javascript" type="text/javascript"> 
    function openWindow(pageURL,Title,w,h) 
    { 
     var left = (screen.width - w)/2; 
     var top = (screen.height - h)/2; 
     var options; 
     if (window.showModalDialog) { 
      options = 'dialogwidth:' + w  + ';dialogheight:'+ h + ';dialogtop:'+ top + ';dialogleft:' + left + ';resizable=no'; 
      console.log(options); 
      window.showModalDialog(pageURL, Title, options); 
     } else { 
      options = "toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes,resizable=no,modal=yes, copyhistory=no, width=" + w + ", height=" + h + ", top=" + top + ", left=" + left; 
      console.log("window.open options: " + options); 
      window.open(pageURL, Title, options) 
     } 
    } 

</script> 
</head> 
<body> 
<a href="javascript:openWindow('http://www.google.com','Google',800,600);">Launch</a> 
</body> 
</html> 
+0

IEのバージョン(showmodaldialog)がIEで正常に動作しています。 – Mordy

+0

Samさん、Firefox 6は私が期待していなかったShowModalDialogブランチに落ちていました。実際にセミコロンではなく、コンマであったので、渡していたオプションを無効にしていました。私は決してそれを考え出していないだろう:) – Mordy

0

showModalDialog()は有効なメンバーwindowですか?私はドキュメントでそれを見つけることができません。

編集:すばやくGoogle検索を行いました。 showModalDialogはW3C標準ではなく、Firefoxでは実装されていません。

編集:私は間違っています。 Firefoxは夢中になり、それをサポートし始めた。

+0

Firefox 3では[window.showModalDialog](https://developer.mozilla.org/ja/DOM/window.showModalDialog)がサポートされています – epascarello

+0

オブジェクトやメソッドがサポートされているかどうかを確認する最も簡単な方法ブラウザでそれをコンソールに入力することです! –

+0

この機能では、showModalDialogはブラウザがサポートしている場合にのみ実行されるはずです。私の意図は、IEだけがそのブランチに入り、Mozillaが適切なwindow.openコマンドを使用するということです。 – Mordy

関連する問題