如何使用CSS或Multimarkdown在新选项卡中打开超链接?

时间:2010-11-26 16:52:29

标签: html css perl hyperlink markdown

我正在使用Text::MultiMarkdownMultiMarkdown文档创建HTML文件。

我希望所有链接都在新标签页中打开。

有没有办法使用CSS模板配置此行为,或直接在MultiMarkdown文档中配置此行为(没有在MultiMarkdown文档中的每个链接周围明确编写HTML)?

4 个答案:

答案 0 :(得分:8)

绝对不在CSS中 - 只关注元素的显示方式,而不是它们的行为方式。

应该可以将<base target="_blank">添加到HTML文档的头部(使用XSLT),但这与将其添加到每个链接相同。

答案 1 :(得分:3)

在HTML和/或JavaScript中,您只能初始化新窗口的打开。用户在某些UA中可以强制打开新窗口作为新选项卡。但你无法控制这种行为。

答案 2 :(得分:2)

理论上,您可以使用CSS3执行此操作:http://www.w3.org/TR/css3-hyperlinks/ - 但是没有常见的浏览器实现此功能。原因可能是人们普遍认为,选择何时打开新窗口或标签应仅留给用户。

答案 3 :(得分:0)

您无法在CSS中执行此操作,但可以使用源。

您可以继承Text::MultiMarkdown并提供自己的_GenerateAnchor实现,类似于此可能会有效:

sub _GenerateAnchor {
    my ($self, $whole_match, $link_text, $link_id, $url, $title, $attributes) = @_;
    if($url
    && index($url, '#') != 0) {
        $attributes = $attributes ? $attributes . ' target="_blank"' : 'target="_blank"';
    }
    return $self->SUPER::_GenerateAnchor($whole_match, $link_text, $link_id, $url, $title, $attributes);
}

由于_GenerateAnchor不是公共界面的一部分,因此这有点笨拙。您还需要使用OO接口而不仅仅是markdown函数。

你也可以联系Text::MultiMarkdown作者,看看他是否会为这类事添加一个标志。也许你可以提供补丁来开始工作。

您还可以使用HTML::Parser和朋友来解析Text::MultiMarkdown中出现的HTML并自行添加target属性。