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。