2011-09-14 11 views
0

私の質問が答えが簡単であることを願っていますが、残念ながら私はjavascriptの知識があまりありません。私は今日の良い部分を費やして問題を調べ、さまざまな回避策を試してみましたが、それまでは十分に機能していませんでした。JavaScript Onclick window.openがIEで正常に動作しない

イメージをクリックすると別のウィンドウが開くように非常に単純なJavaScriptを実行しています。これはIE以外のすべてのブラウザ(モバイルを含む)で動作します。私はその後、クリックしたときには、上記のページを開く必要があることを、背景画像とホバー画像でのdivを作成している

<script type="text/javascript"> 
function open_win() { 
window.open("music/player/song-of-my-soul.html", "_blank, _top", "toolbar=no, location=no, directories=no, status=no, menubar=mo, scrollbars=yes, resizable=no, toolbar=no, copyhistory=yes, width=240, height=400,"); 
} 
</script> 

- 次は何を私は私の頭のタグに含まれてきましたです。以下は、div内に配置した線です。

a href = "#" alt = "サンプルを聞く" title = "サンプルを聞く" class = "play-link" onclick = "open_win()">

これは他のすべてのブラウザで正常に動作しますが、IEでは動作しません。私は、頭にJavaScriptを参照するいくつかの方法を試しましたが、どれも動作しません。

私がこれをテストしているページは、次のとおりです。http://www.christlikemusic.com/song-of-my-soul.php#中央の下部にある「再生」ボタンは、リンクしている画像です。

誰かが私がこれをどのように修正できるかについてのアイデアがあれば、私は最も感謝しています!

デビッド

+0

IEには、ページにJavaScriptエラーがいくつかありますか、それらは何ですか? –

+0

をチェックアウトhttp://stackoverflow.com/questions/710756/ie8-var-w-window-open-message-invalid-argument –

答えて

6

次のウィンドウオプションリストの末尾にカンマがあります。

[snip] ... copyhistory=yes, width=240, height=400,"); 
                ^--- here 

IEはコンマ末尾について悪名高い頑固で、そして意志定期BARFすべてのそれはの数マイル内に入った場合には、それ自体の上に1。

+3

+1ユーモアの価値のために、私はLOLを作った:) –

+0

そしてJavaScriptは悪名高い構文;) –

+0

@マークB ありがとうございました。私はまだJSに慣れています。 。 –

1

はvoid関数でwindow.openをラップしてみてください。

EDIT:またheight指定の後、末尾のカンマを持っていました。

<script type="text/javascript"> 
    function open_win() { 
     void(window.open("music/player/song-of-my-soul.html", "_blank, _top", "toolbar=no, location=no, directories=no, status=no, menubar=mo, scrollbars=yes, resizable=no, toolbar=no, copyhistory=yes, width=240, height=400")); 
    } 
</script> 

これは、子ウィンドウを開くために作成したメソッドです。

openChildWindowWithDimensions = function(url, width, height, showMenu, canResize, showScrollbars) { 
    var childWindow = window.open(url, "", "\"width=" + width + ",height=" + height + ",menubar=" + (showMenu ? "1" : "0") + ",scrollbars=" + (showScrollbars ? "1" : "0") + ",resizable=" + (canResize ? "1" : "0") + "\""); 
    if (childWindow){ 
     childWindow.resizeTo(width, height); //IE9 bug 
    } 
} 
+0

ジェームズを指摘してくれてありがとう。あなたの方法も分かち合ってくれてありがとう。私は他の提案の一つを使用してそれを並べ替えることができました。 もう一度ありがとうございます。 。 –

+0

@James Johnson:void関数を使用して私の問題を解決しました(私はsitemapnode url属性でwindows.openを使用していましたが、IE以外のすべてのブラウザで問題なく動作しました。 – awrigley

2

ウィンドウ名にスペースを入れることはできません。

"_blank, _top"を別のものに変更する必要があります。

+0

ありがとうございました。私はそれを変更することができ、それはうまくいった。 –

0

問題は第2引数です。試してみてください

window.open("music/player/song-of-my-soul.html", "_blank", "toolbar=no, location=no, directories=no, status=no, menubar=mo, scrollbars=yes, resizable=no, toolbar=no, copyhistory=yes, width=240, height=400"); 

第2パラメータは開くウィンドウの名前です。有効な名前でなければなりません。あなたの場合、有効な名前ではない_blank, _topとして渡してください。それは_blankとすることができます。

さらに有効な値hereとIE定義hereがあります。

IE8/IE9のような新しいIEバージョンを使用している場合、IEに付属の開発ツールを使用してコマンドを実行し、がinvalid argumentエラーを投げていることがわかります。

+0

そのArunのおかげで、それはまさに問題でした。あなたの提案は完璧に機能しました!非常に助けを感謝=) –

関連する問題