ie8 var w = window.open() – “消息:无效的参数。”

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

代码是:

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

错误是:

消息:无效的参数。
行:419字符:5
代码:0
URI: http://HOSTNAME/js_context.js

我已经确认了代码的行号(“行”和“URI”是正确的),我知道在IE8的后续版本中,这被认为是准确的。

我已经通过转储提醒检查了通话中的所有传入参数,而且这些参数都是有效的。

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

更新:

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

UPDATE2:

基于:

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

当一个函数被立即调用时,整个调用expression式应该被包装在parens中,这样就清楚地表明了正在生成的值是函数的结果而不是函数本身。

这不完全是这里发生的事情,但我发现应用这个原则解决了这个问题,在IE8的兼容模式下。

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

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

我有相同的错误信息。 最后问题是第二个参数的无效名称,也就是说,我有一行:

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

问题是“窗口标题”,因为它是无效的。 它工作正常与以下行:

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

事实上,仔细阅读我意识到,微软不支持一个name作为第二个参数。 当您查看官方文档页面时 ,您会看到Microsoft只允许以下参数:如果使用该参数:

  • _空白
  • _媒体
  • _parent
  • _search
  • _自
  • _最佳

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

在IE中调用window.open时,第二个参数(窗口名称)必须是预定义的目标string之一,或者是JavaScript 中具有有效标识符forms的string。

那么什么在Firefox中起作用:“Job Directory 9463460”,在Internet Exploder中不起作用,例如必须replace为“Job_Directory_9463460”(没有空格,没有减号,没有点,它必须是有效的标识符) 。

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

可选的。 指定窗口名称的string。 该名称用作表单或锚点元素上的TARGET属性的值。

  • _blank sURL被加载到一个新的未命名的窗口中。
  • _media URL在Microsoft Internet Explorer 6的媒体栏中加载。Microsoft Windows XP Service Pack 2(SP2)及更高版本。 此function不再受支持。 默认情况下,URL被加载到一个新的浏览器窗口或标签。
  • _parent sURL被加载到当前帧的父级。 如果该框架没有父项,则该值作为_self值。
  • _search在Windows Internet Explorer 7中禁用,有关详细信息,请参阅Internet Explorer 7中的安全性和兼容性。 否则,在浏览器的Internet Explorer 5或更高版本的search窗格中打开sURL。
  • _self当前文档被replace为指定的sURL。
  • _top sURLreplace可能加载的任何框架集。 如果没有定义框架集,则该值将作为值_self。

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

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

我也遇到这个问题,而我使用下面的代码:

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

但是当我删除“窗口标题”空白时,下面的代码正在工作:

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

嗨使用下面的代码其工作…

 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'); 

意思是微软不允许你inputwindow.open函数中应该是空白的窗口名称…

谢谢你,Nilesh Pangul

对我来说,问题是在窗口名称字段中input“ – ”。 我删除了破折号和IE不会出错,实际上打开窗口。

第四位代表什么,一个是“假”作为一个价值? 这不应该是错误的(即没有引号?)。 IE的早期版本可能会强制string为布尔值,但新的版本不会。

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

我从我的window.open调用中删除了标题(可以使用null或''),并将hten添加到正在打开的页面中:

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

不是任何方式的理想,但是这将允许你在所有浏览器中设置标题为你想要的。

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

我发现了同样的问题,并在阅读第一个答案,认为这个问题是由窗口名称造成的,改变了它:首先是'_blank',它工作正常(兼容性和常规视图),然后到以前的值,只有减在价值的空间:) – 也工作。 国际海事组织,问题(或其中的一部分)是由IE无法使用一个正常的string值作为wname引起的。 希望这有助于如果有人遇到同样的问题。

如果你想使用新窗口的名称等张贴到这个窗口的窗体,那么解决scheme,工作在IE,FF,铬:

  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启动一个新窗口时,甚至使用“有效的”自定义窗口名称(而不是_blank等),似乎仍然存在问题。 它第一次单击链接时工作正常,但如果再次单击它(与第一个启动的窗口仍然),您会收到一个“错误:没有这样的接口支持”脚本debugging。