我有一个只有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
当要立即调用函数时,整个调用表达式应该包含在parens中,以便很明显生成的值是函数的结果而不是函数本身.
这不完全是这里发生的事情,但我发现在IE8的兼容模式下应用该原则解决了这个问题.
var w = (window.open(urlstring, wname, wfeatures, false));
小智.. 251
这是一个旧帖子,但可能仍然对某人有用.
我有相同的错误消息.最后问题是第二个参数的名称无效,即我有一个像:
window.open('/somefile.html', 'a window title', ');
问题是'窗口标题',因为它无效.它在以下行中运行良好:
window.open('/somefile.html', '', ');
事实上,仔细阅读我意识到微软并不支持name
第二个论点.当您查看官方文档页面时,您会看到Microsoft仅允许以下参数,如果使用该参数:
_空白
_媒体
_parent
_搜索
_自
_最佳
当我的Windows名称在"my-windowname"这个名字中有一个短划线" - "时,IE中也出现了这个错误,IE质量永远不会让我感到惊讶. (33认同)
它在IE8中使用ImageDisplay1234等名称,但不适用于Image-Display-1234 (3认同)
简单地说:https://developer.mozilla.org/en/DOM/window.open - >"strWindowName没有指定新窗口的标题." (2认同)
小智.. 78
IE对窗口名称参数很挑剔.它不喜欢空格,破折号或其他标点符号.
这是一个旧帖子,但可能仍然对某人有用.
我有相同的错误消息.最后问题是第二个参数的名称无效,即我有一个像:
window.open('/somefile.html', 'a window title', ');
问题是'窗口标题',因为它无效.它在以下行中运行良好:
window.open('/somefile.html', '', ');
事实上,仔细阅读我意识到微软并不支持name
第二个论点.当您查看官方文档页面时,您会看到Microsoft仅允许以下参数,如果使用该参数:
_空白
_媒体
_parent
_搜索
_自
_最佳
IE对窗口名称参数很挑剔.它不喜欢空格,破折号或其他标点符号.
当您window.open
在IE中调用时,第二个参数(窗口名称)必须是预定义的目标字符串之一或字符串,其在JavaScript 中具有有效标识符的形式.
那么,在Firefox作品:"作业目录9463460",并没有在互联网爆工作,并已被替换为:"Job_Directory_9463460"为例(没有空格,没有减号,没有点,它必须是一个有效的标识符) .
问题可能是wname,尝试使用上面链接中显示的那些之一,我引用:
可选的.用于指定窗口名称的字符串.此名称用作表单或锚元素上的TARGET属性的值.
_blank将sURL加载到一个未命名的新窗口中.
_media网址已加载到Microsoft Internet Explorer 6中的媒体栏中.Microsoft Windows XP Service Pack 2(SP2)及更高版本.不再支持此功能.默认情况下,URL会加载到新的浏览器窗口或选项卡中.
_parent将sURL加载到当前帧的父级中.如果框架没有父级,则此值用作值_self.
_search在Windows Internet Explorer 7中禁用,有关详细信息,请参阅Internet Explorer 7中的安全性和兼容性.否则,将在Internet Explorer 5或更高版本的浏览器搜索窗格中打开sURL.
_self将当前文档替换为指定的sURL.
_top sURL替换可能加载的任何框架集.如果没有定义框架集,则此值用作值_self.
如果使用另一个wname,window.open将不会执行...
实际上可以使用名称,但它不能有空格,所以
window.open("../myPage","MyWindows",...)
应该没有问题(window.open).