IE8 VAR W = window.open() - “消息:无效的参数”。

问题描述 投票:113回答:14

我有一个具有IE8,唯一的问题站点:

该代码是:

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

错误是:

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

我已确认的代码行数(“线”和“URI”是正确的),我在IE8的更高版本的理解,这被认为是准确的。

我已经倾倒警报检查呼叫中的所有传入的参数,和他们看起来都有效。

这个问题不会发生在FF(大概3)。

更新:

这个问题似乎是在使用分配window.open的结果做“变种W”时,()。当我行拆分成两个语句它工作在IE8。

UPDATE2:

基于:

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

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

这不正是是怎么回事,但我发现应用原则解决了这个问题,在IE8的兼容性模式。

var w = (window.open(urlstring, wname, wfeatures, false));
javascript internet-explorer-8
14个回答
251
投票

这是一个老帖子,但也许有人还是有用的。

我有同样的错误消息。到底问题是作为第二个参数无效的名称,即,我有一个线,如:

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

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

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

事实上,仔细阅读我意识到,微软不支持name作为第二个参数。当你在看official documentation page,你看到微软只允许下面的参数,如果使用这样的说法都:

  • _空白
  • _媒体
  • _parent
  • _搜索
  • _自
  • _最佳

1
投票

设置在window.open标题的时候,这里的答案是在正确的IE不支持空格(),没有人可以提供一个解决方法。

我删除了标题从我的window.open通话(你可以用null或“”),并添加HTEN被打开以下页面:

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

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


0
投票

尝试删除最后一个参数。除此之外,确保URL字符串,名称和功能存在。


0
投票

我发现了同样的问题,读取认为问题是由窗口名称造成的第一个答案后,改变了它:第一个为“_blank”,其工作的罚款(包括兼容性和常规视图),然后到以前的值,只有零下在价值:)空间 - 也工作了。 IMO,问题(或它的一部分)由IE是无法使用普通的字符串值作为wname引起的。希望这可以帮助,如果有人跑进了同样的问题。


0
投票

如果你想使用新窗口等的名称提交表单到这个窗口,那么解决方案,即在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";

      ...

0
投票

甚至当使用一个“有效”自定义窗口名称(不_blank等)使用window.open来打开一个新窗口似乎仍有问题。第一次你点击链接它工作正常,但如果你再次点击它(第一个推出窗口仍达)您会收到一个“错误:支持没有这样的接口”脚本调试。


78
投票

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


16
投票

当您打电话window.open在IE中,第二个参数(窗口名称)必须是预定义的目标串或字符串,其具有在JavaScript一个有效标识符的形式中的任一个。

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


8
投票

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

可选的。字符串,指定窗口的名称。这个名称被用作用于在窗体上TARGET属性或一个锚定元件的值。

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

如果使用其他wname,window.open不会执行...


5
投票

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


4
投票

我也满足了这个问题,而我用下面的代码:

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

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

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

2
投票

喜用下面的代码它的工作...

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北


2
投票

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


1
投票

是什么位置的4个代表,有“假”作为价值的人吗?难道不应该是假的,(即不带引号?)。这有可能是早期版本的IE将强制字符串为布尔值,但较新的没有。

© www.soinside.com 2019 - 2024. All rights reserved.