2011-09-14 108 views
0

我希望我的問題是一個很簡單的問題,但不幸的是我對javascript沒有太多的瞭解。我花了很長一段時間來搜索這個問題並嘗試各種解決方法,但迄今爲止沒有任何工作能夠充分發揮作用。JavaScript Onclick window.open在IE中無法正常工作

我正在運行一段非常簡單的JavaScript代碼,因此當單擊一個圖像時會打開一個單獨的窗口。這將適用於除IE以外的其他任何瀏覽器(包括手機)。以下是我已經包括在我的腦海標籤 -

<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 =「聽樣本」標題=「聽樣本」類=「播放鏈接」的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

你必須在Windows選項列表中的尾隨逗號:

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

IE是出了名的固執尾隨逗號,並定期BARF遍佈本身如果它幾英里的範圍內一。

+3

+1只是爲了幽默的價值,讓我大聲笑:) –

+0

而且JavaScript是臭名昭着的無情語法;) –

+0

@ Marc B 非常感謝您指出。我還是習慣了JS。 。 –

1

嘗試使用void函數包裹window.open:

編輯:你也有一個尾隨逗號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

@詹姆斯約翰遜:使用void函數治好了我的問題(我曾經在sitemapnode的url屬性中使用了windows.open,在除IE以外的所有瀏覽器中工作良好,使用void,在所有瀏覽器中都能正常工作)。 – awrigley

2

窗口名稱不能有空間。

因此,您需要將"_blank, _top"更改爲其他內容。

+0

非常感謝。我能夠改變它,並工作。 –

0

問題是第二個參數。嘗試

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"); 

第二個參數是要打開的窗口的名稱。它必須是一個有效的名稱,在你的情況下,你已經通過它作爲_blank, _top這不是一個有效的名稱。它可以是_blank

您可以找到更多有效值here和IE定義here

如果您使用的是IE8/IE9等新IE版本,那麼您可以使用IE自帶的開發工具運行該命令,並發現window.open出現invalid argument錯誤。

+0

感謝Arun,這正是問題所在。你的建議非常完美!非常感謝幫助=) –