Ie8 var w = window.open()-“ Message: Invalid 参数。”

我有一个网站,有一个只有 IE8的问题:

The code is:

var w = window.open(urlstring, wname, wfeatures, 'false');

错误是:

消息: 无效参数。
线路: 419 字符: 5
密码: 0
返回文章页面 http://hostname/js_context.js :

I have confirmed the line number of the code (the "Line" and "URI" are correct), and I understand in later versions of IE8, this is considered accurate.

我通过转储警报检查了呼叫中的所有传入参数,它们看起来都是有效的。

这个问题不会发生在 FF (可能是3)上。

更新:

问题似乎是在执行“ var w”时使用指定 window.open ()的结果。当我把这一行分成两个语句时,它在 IE8中工作。

更新2:

基于:

Http://javascript.crockford.com/code.html

调用函数时 立即,整个祈祷 表达式应该用括号括起来 so that it is clear that the value 产生的结果 而不是函数本身。

这不完全是什么正在这里发生,但我发现应用原则解决了问题,在 IE8的兼容性模式。

var w = (window.open(urlstring, wname, wfeatures, false));
117510 次浏览

尝试删除最后一个参数。除此之外,确保 urlstring、 wname 和 wFeature 存在。

位置4代表什么,它的值是‘ false’?这不应该是错误的吗? (例如,没有引号?).早期版本的 IE 可能会将字符串强制为布尔值,但是新版本不会。

问题可能是 wname,尝试使用上面的链接中的一个,我引用:

可选的。字符串,它指定 窗口的名称。使用此名称 作为 TARGET 属性的值 在一个形式或锚元素上。

  • SURL 被加载到一个新的、未命名的窗口中。
  • _ Media 网址加载在 Microsoft Internet 的媒体栏中 探险家6号 Windows XP ServicePack2(SP2)及更高版本。 这个特性已经不存在了 默认情况下,URL 是 加载到新的浏览器窗口或 标签。
  • SURL 被加载到当前框架的父级。如果框架没有父级,则此值充当 value _ self。
  • _search Disabled in Windows Internet Explorer 7, see Security and Compatibility in Internet Explorer 7 for details. Otherwise, the sURL is opened in the browser's search pane in Internet Explorer 5 or later.
  • _ self 当前文档被替换为指定的 sURL。
  • _ top sURL 替换可能加载的所有框架集。如果没有定义框架集,则此值充当 value _ self。

如果使用另一个 wname,window.open 将不会执行..。

我发现了同样的问题,在阅读了假定问题是由窗口名引起的第一个答案之后,我把它更改为: 首先改为“ _ space”,这样就可以了(兼容性和常规视图) ,然后改为之前的值,只减去值中的空格:)-也可以了。问题(或部分问题)是由 IE 无法使用普通字符串值作为 wname 引起的。如果有人遇到同样的问题,希望这能有所帮助。

这是一个旧的职位,但可能仍然有用的人。

我收到了同样的错误消息。最后,问题是第二个参数的名称无效,比如,我有一行这样的代码:

   window.open('/somefile.html', 'a window title', 'width=300');

这个问题是“窗口标题”,因为它是无效的。它与下面的行工作得很好:

   window.open('/somefile.html', '', 'width=300');

事实上,仔细阅读后,我意识到微软并不支持 name作为第二个论点。当你查看 官方文件页时,你会发现微软只允许下列参数,如果使用这个参数的话:

  • 空白
  • _media
  • 父母
  • 搜索
  • 自我
  • 开始

IE 对窗口名称参数很挑剔,它不喜欢空格、破折号或其他标点符号。

When you call window.open in IE, the second argument (window name) has to be either one of the predefined target strings or a string, which has a 有效标识符的形式 in JavaScript.

那么,什么在 Firefox 中工作: “ Job Directory 9463460”,没有在 Internet Explorer 中工作,并且必须被替换为: “ Job _ Directory _ 9463460”(没有空格,没有减号,没有点,它必须是一个有效的标识符)。

如果你想使用新窗口的名称等张贴一个表单到这个窗口,然后解决方案,在 IE,FF,Chrome 中工作:

  var ret = window.open("", "_blank");
ret.name = "NewFormName";


var myForm = document.createElement("form");
myForm.method="post";
myForm.action = "xyz.php";
myForm.target = "NewFormName";


...

实际上一个名字是可以使用的,但是它不能有空格 window.open("../myPage","MyWindows",...)应该没有问题(window.open)。

Hi using the following code its working...

onclick="window.open('privacy_policy.php','','width=1200,height=800,scrollbars=yes');

前情提要

onclick="window.open('privacy_policy.php','Window title','width=1200,height=800,scrollbars=yes');

意思是微软不允许你输入窗口名称它应该是空白的在 window.open函数..。

谢谢, Nilesh Pangul

对于我来说,问题是在窗口名称字段中使用了破折号“-”。我删除了破折号和 IE 没有错误出来,实际上打开了窗口。

在使用以下代码时,我也遇到了这个问题:

window.open('test.html','Window title','width=1200,height=800,scrollbars=yes');

但是当我删除 blank space of the "Window title"时,下面的代码正在工作:

window.open('test.html','Windowtitle','width=1200,height=800,scrollbars=yes');

这里的答案是正确的,IE 在 window.open ()中设置标题时不支持空格,似乎没有提供解决方案。

我从 window.open 调用中删除了标题(可以使用 null 或“) ,并在打开的页面中添加了以下内容:

<script>document.title = 'My new title';</script>

无论如何都不理想,但这将允许您在所有浏览器中将标题设置为您想要的任何内容。

即使使用“有效的”自定义窗口名称(not _ space 等)使用 window.open 来启动新窗口,似乎仍然存在问题。当你第一次点击链接的时候它工作的很好,但是如果你再次点击它(第一个启动的窗口仍然打开)你会收到一个“错误: 没有这样的界面支持”的脚本调试。