在IE浏览器中,window.open无法正常工作。

25

显然,在Internet Explorer下,调用window.open是无效的。我的网站上的Javascript代码没有运行,我认为这是由于该错误引起的。

它告诉我出错的那一行是对window.open的调用,显然有一个参数是无效的。

$('.objeto').click( 
        function() {
            var center   = 'height=380,width=900,top='+((screen.width - 900)/2)+',left='+((screen.height - 380)/2);
            var address = $(this).attr('id');
            window.open (address,'Ver articulo', config=center); 
        }
    );

该网站在Google Chrome和Firefox下均可以正常运行。


可能是重复的问题:Javascript“window.open”代码在Internet Explorer 7或8中无法工作 - Lightness Races in Orbit
4个回答

49

在IE浏览器中,你的第二个变量(新窗口的名称)不能包含空格。

尝试使用以下方式:

window.open (address,'Ver_articulo', config=center); 

2
您,先生,是一位绅士和学者。这就是答案。我在IE上也遇到了JQuery兼容性的问题。它告诉我从http://jqueryjs.googlecode.com/files/jquery-1.3.js获取的JQuery代码存在错误。它说在第4031行有非法参数。 - serv-bot 22
3
@serv-bot - 好的,我已经拥有了学者徽章。如果我回答旁边也有一个绿色标志就好了... :) - Dan Dumitru
1
关于您的jQuery错误,那很奇怪,您应该发布一个新问题来解决它。 - Dan Dumitru
哈哈哈,你会明白的。记得我要等10分钟才能对答案投票。有关于我的问题的任何想法吗?还是我应该发另一个问题? - serv-bot 22
2
请注意,如果第二个参数包含“-”,IE也会失败。例如,“twitter-window”将失败。我非常喜欢IE! - moey

7
值得再次强调的是,IE9(及可能更早版本)不喜欢在窗口名称(第二个参数)中使用连字符(“-”)。
我知道其中一个评论提到了这一点,但有点被埋没了 - 这是一条提示,为我解决了一个问题。

3

我不确定config是什么,你只需要:

window.open (address,'VerArticulo', center);

请注意,看起来你的id属性无效,无法产生这里所需的效果,你可能需要使用其他东西,例如在元素上使用data-href="urlHere",如果它还不是一个锚点。


我正在通过id属性解析URL,因为标签是由一个从mysql表中获取信息的php脚本自动生成的。在所有主流浏览器上都运行正常。有没有什么原因我不应该这样做? - serv-bot 22
@serv-bot - 无效的ID可能会产生各种副作用和不一致的行为,最好在期望href的位置使用属性,或者至少不期望无效的ID。 - Nick Craver
“无效ID”是什么意思?不同的DIV框是这样生成的... $id = $row['id']; echo "<div id='verauto.php?fid=$id' class='objeto'>"; 它们不会重复出现。 - serv-bot 22
2
@serv-bot - 你可以在这里查看规范(http://www.w3.org/TR/REC-html40/types.html#type-name):“ID和NAME标记必须以字母([A-Za-z])开头,后面可以跟任意数量的字母、数字([0-9])、连字符(“-”)、下划线(“_”)、冒号(“:”)和句点(“.”)。” 因此查询字符串部分无效 :) 最好使用数据属性,例如 data-href="verauto.php?fid=$id".attr("data-href") - Nick Craver
谢谢!我会做出相应的更改,以便正确使用语言。你非常有帮助,我想知道我是否可以得到你对我即将发布的另一个问题的见解。 :) - serv-bot 22

0

虽然回答OP有点晚了,但对于其他遇到这个问题的人可能会有所帮助:

我也遇到了与OP完全相同的问题,尝试使用“window.open”方法后出现了问题。事实证明,Chrome可以使用原始的href标签和其中的URL,而IE似乎会对此感到困惑。将链接中的href删除后,问题得到了解决。

代码示例:

$(document).ready(function () 
{
    $('a[rel^="external"]').each(function () 
    {
        var externalLink = $(this);
        var externalLinkValue = externalLink.attr("href");
        externalLink.unbind('click');
        externalLink.removeAttr("href");

        externalLink.click(function (event)
        {
            event.preventDefault();
            followExtrenalLink = window.open(externalLinkValue,'_blank');
        });

        externalLink.hover(function ()
        {
            externalLink.css('cursor', 'pointer');
        });

    });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接