在Firefox和IE中的Window.open问题

时间:2015-10-04 14:50:50

标签: javascript jquery firefox

我打开一个关于超链接的新窗口。

问题: 在最小化窗口之后,如果我单击超链接,则应该打开相同的窗口(在Chrome最小化窗口中将打开)。但这并不是在firefox和IE中发生的。任何人都可以帮忙。

<html>
<head></head>
<body>
<p><a href="http://www.w3schools.com/html/" onclick="window.open('http://www.w3schools.com/html/', 'newwindow', 'width=1500, height=900'); return false;">Visit our HTML tutorial</a></p>
</body>
</html>                     

3 个答案:

答案 0 :(得分:0)

window.open允许您为弹出窗口指定唯一标识符;这允许您始终在同一弹出窗口中打开多个链接。 如果您在不同的链接上使用不同的标识符,它应该打开多个弹出窗口。

// making x=3 into {x: 3}
function serialize(args) {
  var obj = {};
  var noWhiteSpace = new RegExp(" ", "g");
  args = args.split(",");
  args.forEach(function(arg) {
    arg = arg.split("=");
    var key = arg[0].replace(noWhiteSpace, "");
    obj[key] = arg[1];
  });
  return obj;
  }

 function foo(x=5, y=7, z='foo') {}

// converting the function into a string
var fn = foo.toString();

// magic regex to extract the arguments 
var args = /\(\s*([^)]+?)\s*\)/.exec(fn);

//getting the object
var argMap = serialize(args[1]); //  {x: "5", y: "7", z: "'foo'"}

答案 1 :(得分:0)

  

如果使用了strWindowFeatures参数且未定义任何尺寸要素,则新窗口尺寸将与最近渲染的窗口的尺寸相同。

您可能想查看此链接 window.open web api for mozilla

答案 2 :(得分:0)

参数列表中唯一ID的概念根本不适用于另一个答案中的建议。

您需要一个功能,以便在IE和FF中执行您需要的操作。诀窍是获取一个函数来查看它是否已经打开过一个窗口,如果有的话就什么都不做。

<script>

            var opened = false;          

            function openWindow(){          

                if (!opened) {

                    w = window.open('', 'test', 'width=1500, height=900');                    
                    w.location = "http://www.google.com";;

                    w.onload = function() {
                        w.onunload = function() {
                            opened = false;
                        };
                    };
                    opened = true;
                }

            }

</script>

我正在使用opened全局变量来跟踪此情况。我们设置新创建的窗口,以便在关闭时将false设置为此变量。现在该函数可以决定是否应该真正打开一个新窗口。请注意以下几点:

  1. 我们使用新窗口的onLoad函数来设置onUnload。因为IE似乎会在加载页面后立即替换此处设置的事件处理程序。

  2. 您可以看到我们首先打开一个空白窗口,然后设置它的URL。这是因为如果来自另一个域,IE在打开新窗口时不返回任何内容。