2009-12-02 63 views
0

我创建了一个简单的JQuery脚本,它通过一个url数组循环并打开多个窗口。Javascript Window.open问题IE7/IE8

这是对广大的平台上工作的罚款。

然而,IE7和IE8在用户机器上的浏览器只打开一个窗口。没有JavaScript错误存在。

我有我的笔记本电脑相同的版本,它工作正常。

请可能有人阐明潜在因素任何光线?

受影响的计算机:XP SP3 - IE 7最终,Windows 7中的IE 8

任何帮助将不胜感激。

干杯 保罗

+0

弹出式窗口拦截?内置或其他 – Greg 2009-12-02 10:14:34

+1

很难提供严肃的建议,根本看不到代码 – 2009-12-02 10:17:05

+0

道歉,这里是代码片段: $(“form#linkSearch”)。submit(function(){ term =($(' #linkTerm'。)VAL());对于 (VAR i的$散列){ \t指数= i.replace(/链接/ IG, ''); \t如果(术语){ \t URL = $ linksHash [索引] .replace(/ XXX /克,术语); \t}否则{ \t URL = $( '#' + I).attr( 'href' 属性); \t} window.open(URL,我+ term.replace(/ [^ a-zA-Z0-9] +/g,'_')); } return false; }); 用户输入一个搜索词,我清理搜索词剥离非字母数字字符并将其用作窗口名称。 – Mindblip 2009-12-02 10:23:46

回答

1

对不起,我不能按照你的一行未格式化代码。但下面确实在我提供包括Firefox 3.5,Opera 10的,三价铬和Internet Explorer 6,7和8的所有浏览器的工作:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html lang="es"> 
<head><title></title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
<script type="text/javascript"><!-- 
function openLinks(){ 
    var linkList = [ 
     "http://www.google.es", 
     "http://www.yahoo.com", 
     "http://www.bing.com", 
     "http://stackoverflow.com", 
     "http://serverfault.com/" 
    ]; 

    $(linkList).each(function(){ 
     window.open(this); 
    }); 
} 
//--></script> 
</head> 
<body> 

<input type="button" onclick="openLinks()" value="Open lots of links"> 

</body> 
</html> 

弹出窗口相关的典型错误包括:

  • 分配ID与Windows和重复使用相同的ID - >分配不同的ID(或根本没有,如果没必要)
  • 开幕未经请求的弹出窗口 - >让用户触发动作
3

有可能是一个弹出窗口拦截器启用

1

不知道,但你指定一个窗口的一个变量的每个新的参考?这会产生问题,但是如果你放置一个变量,它会在每次获得新的引用,并且jquery循环内的东西工作正常。

+0

我已经更新了代码,如下所示: myWin = window.open(url,i + term。取代(/ [^ A-ZA-Z0-9] + /克, '_')); – Mindblip 2009-12-02 10:44:51

+0

等待客户回复,这是你的意思吗? – Mindblip 2009-12-02 10:45:26

+0

是的,这就是我的意思。 – Sarfraz 2009-12-02 11:23:12

2

如果我没有记错,从IE7 +的弹出窗口拦截器允许在JavaScript中每个用户的互动只是一个新的窗口,然后阻止。