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

IT技术 javascript internet-explorer-8
2021-01-16 09:33:33

我有一个只有 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 中有效。

更新2:

基于:

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

当一个函数被立即调用时,整个调用表达式应该被包裹在括号中,以便清楚地表明产生的值是函数的结果而不是函数本身。

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

var w = (window.open(urlstring, wname, wfeatures, false));
6个回答

这是一个旧帖子,但可能对某人仍然有用。

我有同样的错误信息。最后,问题是第二个参数的名称无效,即,我有如下一行:

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

问题是“窗口标题”,因为它无效。它适用于以下行:

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

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

  • _空白的
  • _媒体
  • _父母
  • _搜索
  • _自己
  • _最佳
您链接到的 MSDN 文档页面指出“可选。指定窗口名称的字符串。”,在我看来,除了上面列出的参数之外,您应该可以使用任何关键字。
2021-03-14 09:33:33
简单地说:developer.mozilla.org/en/DOM/window.open -> “strWindowName 没有指定新窗口的标题。”
2021-03-16 09:33:33
我想我忽略了检查这个功能的 Mozilla 解释,因为我(提问者)专注于 IE8-only 损坏。
2021-03-30 09:33:33
我在 IE 中也遇​​到了这个错误,当我的 Windows 名称在诸如“my-windowname”之类的名称中有一个破折号“-”时,IE 质量永远让我感到惊讶。
2021-04-01 09:33:33
它可以在 IE8 中使用 ImageDisplay1234 之类的名称,但不适用于 Image-Display-1234
2021-04-09 09:33:33

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

谢谢,这很有帮助..真的很讨厌 IE 6-10
2021-04-01 09:33:33
或点或破折号或其他标点符号
2021-04-06 09:33:33

当您window.open在 IE 中调用时,第二个参数(窗口名称)必须是预定义的目标字符串之一或字符串,它在 JavaScript中具有有效标识符形式

那么,在Firefox作品:“作业目录9463460”,并没有在互联网爆工作,并已被替换为:“Job_Directory_9463460”为例(没有空格,没有减号,没有点,它必须是一个有效的标识符) .

谢谢..这对我有帮助..我的窗口名称中有破折号 (-)
2021-03-15 09:33:33

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

选修的。指定窗口名称的字符串。此名称用作表单或锚元素上的 TARGET 属性的值。

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

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

为了支持 Ben 的论点,MSDN 对 window.open 的第二个参数是这样说的:“指定窗口名称的字符串。该名称用作表单或锚元素上的 TARGET 属性的值。” 这是 TARGET 属性文档:msdn.microsoft.com/en-us/library/ms534659(v=vs.85).aspx它清楚地表明目标可以是任意字符串,而不仅仅是此答案中列出的值。
2021-03-18 09:33:33
我将范围缩小到不包括 - 或 . 当我摆脱标点符号 Image-Display-1234 -> ImageDisplay1234 时,一切都很好。
2021-03-20 09:33:33
我遇到了同样的问题,只是我没有将 window.open 的结果设置为变量。在 wname 变量中有一个页面标题。将其更改为“_blank”并解决了问题。
2021-03-24 09:33:33
最后那句话是不正确的。您还可以 (a) 指定现有框架的名称以在该框架中加载页面,(b) 指定现有“命名窗口”的名称以在那里加载页面,或 (c) 指定一个名称t 存在以创建“命名窗口”。
2021-03-29 09:33:33

实际上可以使用名称,但它不能有空格,因此 window.open("../myPage","MyWindows",...)应该可以正常工作(window.open)。