我正在使用Text::MultiMarkdown从MultiMarkdown文档创建HTML文件。
我希望所有链接都在新标签页中打开。
有没有办法使用CSS模板配置此行为,或直接在MultiMarkdown文档中配置此行为(没有在MultiMarkdown文档中的每个链接周围明确编写HTML)?
答案 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
属性。