JavaScript Onclick window.open在IE中无法正常工作

时间:2011-09-14 15:04:28

标签: javascript

我希望我的问题很容易回答,但不幸的是我对javascript知之甚少。我花了很多时间来搜索问题并尝试各种解决方法,但迄今为止没有任何工作能够充分发挥作用。

我正在运行一段非常简单的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,点击它时应打开上面的页面。以下是我在div中放置的行 -

a href =“#”alt =“听取样本”title =“听取样本”class =“play-link”onclick =“open_win()”&gt;

这适用于所有其他浏览器,但不能在IE中使用。我已经尝试了几种方法来引用头部的JavaScript,但它们都不会起作用。

我正在测试此页面的页面可以在下面看到 - http://www.christlikemusic.com/song-of-my-soul.php#中间朝向底部的“播放”按钮是我链接的图像。

如果有人对我如何解决这个问题有任何想法,我将非常感激!

大卫

4 个答案:

答案 0 :(得分:6)

Windows选项列表中有一个尾随逗号:

 [snip] ... copyhistory=yes, width=240, height=400,");
                                                  ^--- here
IE非常顽固地对待尾随逗号,并且如果它在几英里的范围内,它会定期自我调整。

答案 1 :(得分:2)

窗口名称不能有空格。

因此您需要将"_blank, _top"更改为其他内容。

答案 2 :(得分: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
    }
}

答案 3 :(得分: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错误。