【问题标题】:target=_blank doesn't work in IE8, running IEs side-by-side (I run the package of IEs via VirtualBox)target=_blank 在 IE8 中不起作用,并排运行 IE(我通过 VirtualBox 运行 IE 包)
【发布时间】:2009-12-15 07:15:59
【问题描述】:

如果链接设置了 target=_blank,IE8 有时会阻止生成链接。

此问题似乎仅限于 IE 的损坏安装,例如并排安装多个版本时。

我在找到答案后编辑了这个问题,希望这可以为其他人节省一些时间。答案在列出的第一个答案的 cmets 中。

【问题讨论】:

  • 可能有助于改写问题以表明这是尝试并排运行 IE 时出现的问题。
  • 好主意,我改了。
  • 一大堆错误的答案... 更令人不安的是,XHTML 1.1 的孩子们认为通过 javascript 附加 _target=blank 是一种有效的技巧。如果浏览器实现了 XHTML 1.1,您会认为这不起作用。

标签: internet-explorer-8


【解决方案1】:

这取决于您使用的独立 IE8。我在使用“Final Builds Site - Internet Explorer Collection”(http://finalbuilds.edskes.net/iecollection.htm) 版本 1.6.0.3 时发现这是一个问题。开发人员现在已经修复了这个错误。 1.6.0.4,带有 target="_blank" 的链接现在可以正常工作了。

【讨论】:

    【解决方案2】:

    我知道这已经回答了,但我只是想谈谈 jQuery 的实时绑定功能:

    $("a.myclass").live("click",function() {
        $(this).attr("target","_blank");
    });
    

    此示例将 'target="_blank"' 属性设置为具有“myclass”类的任何链接,即使是使用 Javascript 创建的链接。

    【讨论】:

      【解决方案3】:

      如果你使用 target='blank' 呢?我知道这不一样,但是您将在新实例中打开弹出窗口/窗口,并且您的站点可以验证 XHTML 严格模式:)

      【讨论】:

      • 对不起,我放错了一个报价。它应该是 target='blank'
      • 为了记录,这不是 XHTML 1.0 或 1.1 严格中不允许的“_blank”,而是锚或链接元素上的目标属性。它(故意)被排除在 DTD 之外。如果使用 target='blank' 为您验证为 XHTML 1.0 或 1.1 Strict,那么这是验证器的错误。也就是说,大多数浏览器仍然接受并处理它,无论是否有效。
      【解决方案4】:

      是的,XHTML 严格模式不接受 target="_blank"。

      如果您不想在任何地方继续使用 window.open,您可以使用 rel="external" 和一些额外的 Javascript,如下所示,使用 JQuery:

      $(document).ready(function() {
          $("a[rel='external']").attr("target","_blank");
      });
      

      编辑:设置所有生成的链接:

       $("a[rel='external']").ready(function() { 
          $("a[rel='external']").attr("target","_blank");
       });
      

      或者,没有 jQuery,你可以使用脚本,found here

      function externalLinks() { 
       if (!document.getElementsByTagName) return; 
       var anchors = document.getElementsByTagName("a"); 
       for (var i=0; i<anchors.length; i++) { 
         var anchor = anchors[i]; 
         if (anchor.getAttribute("href") && 
             anchor.getAttribute("rel") == "external") 
           anchor.target = "_blank"; 
       } 
      } 
      window.onload = externalLinks;
      

      【讨论】:

      • 这不起作用。首先,链接是用 javascript 创建的,因此在加载时不存在。我尝试设置 a.rel 和 a.target,但这不起作用。
      • 嗯,这应该是一个协作网站,而不是“给我一个开箱即用的解决方案”网站。
      • 因此我继续合作。
      • 您的合作包含“这行不通”。您不应该因为解决方案“不起作用”而对人们进行降级。它有效,只是不完全按照您想要的方式。
      【解决方案5】:

      这是因为 target="_blank" 在 XHTML 严格模式下无效。见:

      http://www.8164.org/xhtml-strict/
      

      以下应该适用于所有情况。

      <script>window.open("http://www.80vul.com/test/ie8-1.htm");</script>
      

      我认为从 IE8 Beta 1 开始,默认模式现在是 STRICT 而不是 TRANSITIONAL。

      【讨论】:

      • 这对我不起作用,尽管在我的文档中我强制 IE7 模式如下:
      • 打开新窗口时出现“类未注册”意味着您的 IE8 安装已损坏。
      • debugtheweb.com/test/strict.htm在正确安装IE8后正常工作。
      • 埃里克,你一针见血。我在 VirtualBox 实例上安装了“并排”的 IE(6、7、8 等)。当我通过一个真实的窗口框检查页面时,它可以工作。谢谢!
      • 是的,遗憾的是,这是我们不推荐“并排”黑客的原因之一。 VPC 是当今唯一受支持的并排方式。感谢您的更新!
      猜你喜欢
      • 2011-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-18
      相关资源
      最近更新 更多