我的网站只有IE8问题:
代码是:
var w = window.open(urlstring, wname, wfeatures, 'false');
错误是:
消息:参数无效。
行:419 Char: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));
答案 0 :(得分:251)
这是一个旧帖子,但可能对某人有用。
我有同样的错误消息。最后问题是第二个参数的名称无效,即我有一行如下:
window.open('/somefile.html', 'a window title', 'width=300');
问题是'窗口标题',因为它无效。它在以下行中运行良好:
window.open('/somefile.html', '', 'width=300');
事实上,仔细阅读我意识到微软不支持name
作为第二个参数。当您查看official documentation page时,您会看到Microsoft仅允许以下参数,如果完全使用该参数:
答案 1 :(得分:78)
IE对窗口名称参数很挑剔。它不喜欢空格,破折号或其他标点符号。
答案 2 :(得分:16)
当您在IE中调用window.open
时,第二个参数(窗口名称)必须是预定义的目标字符串之一或字符串,其形式为JavaScript中的有效标识符。
那么在Firefox中有效:“作业目录9463460”,不在Internet Exploder中工作,必须替换为:“Job_Directory_9463460”例如(没有空格,没有减号,没有点,它必须是有效的标识符。)
答案 3 :(得分:8)
问题可能是wname,尝试使用上面链接中显示的那个之一,我引用:
可选。指定的字符串 窗口的名称。使用此名称 作为TARGET属性的值 在表单或锚元素上。
- _blank将sURL加载到一个未命名的新窗口中。
- _media网址已加载到Microsoft Internet的媒体栏中 资源管理器6. Microsoft Windows XP Service Pack 2(SP2)及更高版本。 此功能不再存在 支持的。默认情况下,网址是 加载到新的浏览器窗口或 标签。
- _parent将sURL加载到当前帧的父级中。如果框架没有父框架,则此值将作为值_self。
- _search在Windows Internet Explorer 7中禁用,有关详细信息,请参阅Internet Explorer 7中的安全性和兼容性。否则,将在Internet Explorer 5或更高版本的浏览器搜索窗格中打开sURL。
- _self将当前文档替换为指定的sURL。
- _top sURL替换可能加载的任何框架集。如果没有定义框架集,则此值将作为值_self。
如果使用另一个wname,window.open将不会执行...
答案 4 :(得分:5)
实际上可以使用名称但是它不能有空格
window.open("../myPage","MyWindows",...)
应该没有问题(window.open)。
答案 5 :(得分:4)
我在使用以下代码时也遇到了这个问题:
window.open('test.html','Window title','width=1200,height=800,scrollbars=yes');
但是当我删除“窗口标题”的空格时,以下代码正常运行:
window.open('test.html','Windowtitle','width=1200,height=800,scrollbars=yes');
答案 6 :(得分: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');
表示Microsoft不允许您在window.open
函数...
谢谢, Nilesh Pangul
答案 7 :(得分:2)
对我来说,问题是在窗口名称字段中使用短划线“ - ”。我删除了破折号,IE没有错误输出,实际上打开了窗口。
答案 8 :(得分:1)
第四个位置代表什么,“假”是一个值?这不应该是假的(即没有引号?)。早期版本的IE可能会将字符串强制转换为布尔值,但较新版本的则不会。
答案 9 :(得分:1)
这里的答案是正确的,因为IE在window.open()中设置标题时不支持空格,似乎没有提供解决方法。
我从window.open调用中删除了标题(你可以使用null或''),然后将以下内容添加到正在打开的页面中:
<script>document.title = 'My new title';</script>
无论如何都不理想,但这样您就可以在所有浏览器中将标题设置为您想要的任何内容。
答案 10 :(得分:0)
尝试删除最后一个参数。除此之外,请确保存在url字符串,名称和功能。
答案 11 :(得分:0)
我发现了同样的问题,在阅读了第一个回答后认为问题是由窗口名称引起的,改了它:首先改为'_blank',哪个工作正常(兼容性和常规视图),然后是前一个值,只减去值:)中的空间 - 也工作。 IMO,问题(或其中的一部分)是由IE无法使用普通字符串值作为wname引起的。希望如果有人遇到同样的问题,这会有所帮助。
答案 12 :(得分: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";
...
答案 13 :(得分:0)
即使使用window.open使用“有效”自定义窗口名称(不是_blank等)来启动新窗口,仍然存在问题。第一次单击链接时它工作正常,但是如果再次单击它(第一个启动的窗口仍然处于运行状态),则会收到“错误:没有支持此类接口”脚本调试。