代码之家  ›  专栏  ›  技术社区  ›  siva636

使HTML定位到严格docktype中的新窗口

  •  1
  • siva636  · 技术社区  · 14 年前

    我们使用标签的“target”属性来指定链接的目标位置。

    但是“target”属性不能在严格的doctype中使用(我在 http://w3schools.com/tags/tag_a.asp ). 那么,如果我们使用严格的doctype,解决方案是什么?

    3 回复  |  直到 14 年前
        1
  •  5
  •   Phil.Wheeler    14 年前

    简而言之,JavaScript。

    严格doctype被松散地认为是“严格文档内容”,而不是目标属性定义的行为。它假定用户将决定并完全控制如何在其浏览器中打开链接。

    解决方案是使用JavaScript来定义链接的打开方式。您可以使用类或其他属性使用JS库来强制它们在新窗口中打开:

    <a href="test.php" rel="external">my link</a>
    

    所以你的剧本可能是这样的:

    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;
    

    这在jQuery中更容易实现:

    $(function(){
      $('a[rel=external]').attr('target', '_blank');
    });
    
        2
  •  1
  •   Macy Abbey    14 年前

    如果不能依赖默认的锚定行为,window.open()是打开新选项卡的编程方式。然而,这将被许多弹出窗口拦截器截获。考虑文档内覆盖。 http://www.javascript-coder.com/window-popup/unblockable-popup.phtml

        3
  •  1
  •   casablanca    14 年前

    或者使用过渡doctype,它允许 target ,或者如果要打开新窗口,请使用JavaScript。