【问题标题】:Window.open not working in IE8?Window.open 在 IE8 中不起作用?
【发布时间】:2009-09-18 13:53:08
【问题描述】:

这是我目前使用的 JavaScript:

window.open('/modules/mod_oneononechat/chatwindow.php?key='+key+'&color=blue','x'+winName+'x','location=0,status=0,toolbar=0,menubar=0,resizable=0,scrollbars=0,height=375,width=420');

这似乎在 IE8 中不起作用。 这是一个可以在所有其他浏览器(包括 IE7)上正常工作的聊天窗口。关于为什么它不能在 IE8 上运行的任何想法?

【问题讨论】:

  • 尝试关闭弹出窗口拦截器
  • 试过了..不起作用!
  • 这是哪个版本的IE8?参考support.microsoft.com/kb/164539准确报告版本。
  • 这是 MS IE8 RTM 版本。所以你应该没事。

标签: javascript internet-explorer-8


【解决方案1】:

IE8 不喜欢窗口名称中的空格。

【讨论】:

  • 这也是我的问题。我在 javascript 调试中遇到“无效参数”错误。破折号也不起作用,但下划线起作用。
  • 是的,这里也一样。空格和破折号导致 IE8 拒绝打开请求。感谢您为我节省了很多时间。
  • 我无法相信 IE 有多糟糕...谢谢。
  • IE7 也是如此。
  • 我在问题中看不到空格或破折号!!请回复
【解决方案2】:

从窗口名称中删除空格解决了这个问题。

【讨论】:

    【解决方案3】:

    在 IE8 中,以下功能不会弹出新窗口,而在 Mozilla 和 Chrome 中运行良好。

    function openReports(reportUrl){
       window.open(reportUrl,'Report Information','height=800,width=1000,left=200,top=200,toolbars=no,resizable=no,scrollbars=auto,location=no');
    }
    

    从窗口名称中删除空格(报告信息)也解决了我的问题。

    【讨论】:

    • 从窗口名称中删除空格也解决了我的问题。
    【解决方案4】:

    这对我有用:

    javascript:window.open('http://google.com', 'x'+'winName'+'x', 'location=0', 'status=0', 'toolbar=0', 'menubar=0', 'resizable=0', 'scrollbars=0', 'height=375', 'width=420');
    

    【讨论】:

      【解决方案5】:

      我也遇到过这个问题。我写了一个类似

      的函数
      function newPopup(url) {
            popupWindow=window.open(url,'Detailed Informations','height=700,width=1000,left=10,top=10,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no,status=yes')
      }
      

      窗口名称中有空格,即“详细信息”,因此弹出窗口不起作用。只是不要在窗口名称中添加任何空格。

      【讨论】:

        【解决方案6】:

        window.open 具有三个参数:urlwindownameotherfeatures

        对于FF来说,如果第二个参数(windowname)没有传进去,还是可以的:)

        但是在我们测试的 IE 7,8 中,我们必须传递第二个参数

        【讨论】:

          【解决方案7】:
          var newWin = window.open('', '', 'width=400, height=400, top=100, left=100');
          

          在 IE8 中使用 前两个参数必须为空才能在 IE8 上使用。

          【讨论】:

          • 在我的情况下,我没有 winName 参数,因为我正在使用脚本打开另一个网站。省略参数会在 IE 7、8 和 9 中中断脚本。我不得不在 URL 参数和 features 参数之间使用 ''。感谢您提供此信息。
          【解决方案8】:

          你能检查它是否抛出任何 javascript 错误吗?

          你可以使用IE8 built in javascript debugger

          【讨论】:

          • 从基本阶段尝试window.open,比如window.open("/modules/mod_oneononechat/chatwindow.php") ,并一一添加参数。您将了解何时/添加什么使其在 IE8 中停止工作。
          • 如果基本本身不工作,那么你至少可以将其作为浏览器中的设置。
          • 我之所以说这种方法,是因为从 IE8 开始,Microsoft 已经停止支持某些参数并支持一些新的设置。因此,如果您使用旧的,它们会在 IE8 中引发脚本错误。买你说你没有得到任何错误!
          【解决方案9】:

          Microsoft 为 MSIE 5.5/6.0 发布了 support article titled Q281679。但它可能适用于 MSIE 8。

          或者,您可以使用X-UA-Compatible meta tag or header,看看是否可以通过使用兼容模式来解决这个问题(我个人会将此作为最后的手段,而是尝试编写不会导致 IE8行为描述)。

          PS:为避免 IE8 需要兼容模式,请使用W3C page validator 的服务,并在其他符合标准的浏览器(如 Firefox 3)中测试页面(不要忘记使用 Firebug 和 Web 开发工具栏扩展如果你使用 FF3)。

          【讨论】:

          • 它以兼容模式显示..但是是的..我希望它无需打开即可工作..
          • 那我怀疑你的页面没有通过验证。尝试编写符合标准的代码,以便 IE8 不会进入怪异模式。使用validator.w3.org 的 W3C 验证器来帮助自己。
          【解决方案10】:

          如果您在窗口名称中使用空格或破折号,IE 将无法工作(至少我使用的某些版本)。

          【讨论】:

          • 你也不能有斜线。
          【解决方案11】:

          在 IE 中,如果你用window.open() 打开一个窗口 - 如果你想用window.open() 打开新窗口,它不会打开新窗口。

          为此,解决方案是 - IN Window.open 参数传递此参数 "copyhistory=no"

          例如:

          WindowName = window.open('','Name','height=320,width=428,toolbar=no, 
               menubar=no,scrollbars=no, resizable=no,location=no, directories=no,    
               status=no,copyhistory=no');
          

          希望这对你有帮助。

          【讨论】:

            猜你喜欢
            • 2012-05-23
            • 2018-11-06
            • 2018-05-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多