Html 我可以创建与';目标="_“空白”';降价?

Html 我可以创建与';目标="_“空白”';降价?,html,hyperlink,markdown,target,new-window,Html,Hyperlink,Markdown,Target,New Window,有没有办法在Markdown中创建一个在新窗口中打开的链接?如果没有,您建议使用什么语法来执行此操作。我将把它添加到我使用的markdown编译器中。我认为这应该是一种选择。我认为没有降价功能 不过,如果您想使用JavaScript自动打开指向您自己站点外部的链接,可能还有其他可用选项 var links = document.links; for (var i = 0, linksLength = links.length; i < linksLength; i++) { if

有没有办法在Markdown中创建一个在新窗口中打开的链接?如果没有,您建议使用什么语法来执行此操作。我将把它添加到我使用的markdown编译器中。我认为这应该是一种选择。

我认为没有降价功能

不过,如果您想使用JavaScript自动打开指向您自己站点外部的链接,可能还有其他可用选项

var links = document.links;

for (var i = 0, linksLength = links.length; i < linksLength; i++) {
   if (links[i].hostname != window.location.hostname) {
       links[i].target = '_blank';
   } 
}

.

就降价语法而言,如果您想获得详细信息,只需使用HTML即可

<a href="http://example.com/" target="_blank">Hello, world!</a>

我见过的大多数降价引擎都支持普通的旧HTML,只适用于这样的情况,即通用文本标记系统无法剪切它。(例如StackOverflow引擎)然后通过HTML白名单过滤器运行整个输出,因为即使是仅标记的文档也很容易包含XSS攻击。因此,如果您或您的用户想要创建
\u blank
链接,那么他们可能仍然可以

如果这是您将经常使用的功能,那么创建自己的语法可能是有意义的,但它通常不是一个重要的功能。如果我想在新窗口中启动该链接,我会自己按住ctrl键单击它,谢谢。

支持它。它与标准标记语法兼容,但也有许多扩展。您可以这样使用它:

[link](url){:target="_blank"}

我在尝试使用PHP实现降价时遇到了这个问题

由于使用标记创建的用户生成链接需要在新选项卡中打开,但站点链接需要保留在选项卡中,因此我将标记更改为仅生成在新选项卡中打开的链接。因此,并不是页面上的所有链接都链接出来,只是那些使用降价的链接


在markdown中,我将所有链接输出更改为
,使用“查找/替换”非常简单。

我不同意将其保留在一个浏览器选项卡中是更好的用户体验。如果你想让人们留在你的网站上,或者回来看完那篇文章,请在一个新的标签中发送他们

基于@davidmorrow的答案,将此javascript放入您的站点,并将外部链接转换为target=\u blank的链接:

    <script type="text/javascript" charset="utf-8">
      // Creating custom :external selector
      $.expr[':'].external = function(obj){
          return !obj.href.match(/^mailto\:/)
                  && (obj.hostname != location.hostname);
      };

      $(function(){
        // Add 'external' CSS class to all external links
        $('a:external').addClass('external');

        // turn target into target=_blank for elements w external class
        $(".external").attr('target','_blank');

      })

    </script>

//创建自定义:外部选择器
$.expr[':'].external=函数(obj){
return!obj.href.match(/^mailto\:/)
&&(obj.hostname!=location.hostname);
};
$(函数(){
//将“外部”CSS类添加到所有外部链接
$('a:external').addClass('external');
//对于带有外部类的元素,将target转换为target=_blank
$(“.external”).attr('target','u blank');
})
仅用于外部链接的自动化,使用GNU sed和make 如果有人想系统地为所有外部链接执行此操作。但是,从标记创建(X)HTML后,可以运行以下命令:

sed -i 's|href="http|target="_blank" href="http|g' index.html

通过将上述
sed
命令添加到
makefile
中,可以进一步实现自动化。有关详细信息,请参阅GNU或上。

您可以通过本机javascript代码执行此操作,如下所示:


var pattern = /a href=/g;
var sanitizedMarkDownText = rawMarkDownText.replace(pattern,"a target='_blank' href=");

您可以使用{[attr]=“[prop]”添加任何属性


例如,使用Markdown-2.5.2的[Google](){target=“_blank”}

,您可以使用:

[link](url){:target="_blank"}

已完成的alex回答(2010年12月13日)

使用以下代码可以实现更智能的注入目标:

/*
 * For all links in the current page...
 */
$(document.links).filter(function() {
    /*
     * ...keep them without `target` already setted...
     */
    return !this.target;
}).filter(function() {
    /*
     * ...and keep them are not on current domain...
     */
    return this.hostname !== window.location.hostname ||
        /*
         * ...or are not a web file (.pdf, .jpg, .png, .js, .mp4, etc.).
         */
        /\.(?!html?|php3?|aspx?)([a-z]{0,3}|[a-zt]{0,4})$/.test(this.pathname);
/*
 * For all link kept, add the `target="_blank"` attribute. 
 */
}).attr('target', '_blank');
您可以通过在
(?!html?| php3?| aspx?
组构造中添加更多扩展来更改regexp异常(请理解此处的regexp:)

对于没有jQuery版本的,请检查以下代码:

var links = document.links;
for (var i = 0; i < links.length; i++) {
    if (!links[i].target) {
        if (
            links[i].hostname !== window.location.hostname || 
            /\.(?!html?)([a-z]{0,3}|[a-zt]{0,4})$/.test(links[i].pathname)
        ) {
            links[i].target = '_blank';
        } 
    }
}
var links=document.links;
对于(变量i=0;i
在我的项目中,我正在这样做,效果很好:

[Link](https://example.org/ "title" target="_blank")


但并非所有的解析器都允许您这样做。

没有简单的方法可以做到这一点,正如@alex所指出的,您需要使用JavaScript。他的答案是最好的解决方案,但为了优化它,您可能只想过滤到帖子内容链接

<script>
    var links = document.querySelectorAll( '.post-content a' );  
    for (var i = 0, length = links.length; i < length; i++) {  
        if (links[i].hostname != window.location.hostname) {
            links[i].target = '_blank';
        }
    }
</script>

var links=document.querySelectorAll('.post content a');
对于(var i=0,length=links.length;i
该代码与IE8+兼容,您可以将其添加到页面底部。请注意,您需要将“.post content a”更改为用于发布的类


如图所示:

对于重影标记使用:

[Google](https://google.com" target="_blank)
在这里找到它:

我使用的是Grav CMS,它非常有效:

正文/内容:
一些文本[1]

正文/参考文献:
[1]:http://somelink.com/?target=_blank

只需确保首先传递目标属性,如果链接中有其他属性,请将它们复制/粘贴到引用URL的末尾

也可作为直接链接使用:

[转到此页](http://somelink.com/?target=_blank)

一个全局解决方案是将

进入页面的
元素。这有效地为每个锚元素添加了一个默认目标。我使用markdown在基于Wordpress的网站上创建内容,我的主题定制器将允许我将代码注入到每个页面的顶部。如果你的主题没有做到这一点,那么就有一个

所以,你不能将链接属性添加到一个降价URL中是不正确的。要添加属性,请检查正在使用的底层标记解析器及其扩展是什么

特别是,有一个要启用的扩展,它允许在链接中进行标记。e、 g

[Hello, world!](http://example.com/){target="_blank"}
  • 对于来自R的用户(例如使用
    rmarkdown
    bookdown
    blogdown
    等),这是您需要的语法
  • 对于那些没有
    [Hello, world!](http://example.com/){target="_blank"}
    
    [link](http://example.com){:hreflang="de"}
    
    # Pandoc
    { attribute1="value1" attribute2="value2"}
    
    # Kramdown
    {: attribute1="value1" attribute2="value2"}
     ^
     ^ Colon