【问题标题】:RMarkdown html _site.yml navbar href links, open in new tab with target="_blank"RMarkdown html _site.yml navbar href 链接,在新选项卡中打开 target="_blank"
【发布时间】:2019-06-27 20:07:42
【问题描述】:

在 R Markdown HTML _site.yml 页面上苦苦挣扎。在我的导航栏中,我有 href 指向不同的网站链接,我不知道我们在哪里包含

target="_blank"

声明所以链接在新标签页中打开。 Href 链接不遵循 RMarkdowns _site.yml 文件中的正常 html 格式。

    - text: "TWITTER"
      icon: fa-twitter
      href: https://twitter.com
    - text: "GITHUB"
      icon: fa-github
      href: https://github.com
    - text: "SLACK"
      icon: fa-slack
      href: https://slack.com

【问题讨论】:

  • 不完全是我想要的。我可以在我的 HTML 文件中使用“新标签”链接。我专门在我的 _site.yml 导航文件中寻找一种在导航栏上的新选项卡中打开链接的方法。
  • @KevinMagnan 您现在找到解决方案了吗?
  • @jwarz 也有兴趣
  • @jwarz 和 RockScience 不,从来没有找到解决那些在同一页面上打开的链接的解决方案。

标签: html r r-markdown


【解决方案1】:

您可以像这样为每个页面创建一个重定向页面:

    - text: "TWITTER"
  icon: fa-twitter
  href: twitter_redirect.html

然后对于 twitter_redirect.html (etc),使用 window.open 后跟 window.history.back。

<!DOCTYPE html>

<html>
<head>
</head>
<body onload="myFunction()">

  <script>
    function myFunction() {
    window.open('https://twitter.com/', '_blank');
    window.history.back();
    }
  </script>
</body>

【讨论】:

  • 终于在我的网站上使用了这个,它就像一个魅力(除了讨厌的弹出窗口拦截器)。谢谢!
  • 这可行,但它需要创建和维护一个中间页面。请参阅非常优雅的 Abdessabour 解决方案
【解决方案2】:

基本上最好的做法是创建一个自动将target="_blank" 添加到任何外部链接的js 代码。并考虑到rmarkdown 生成的内部链接是相对的事实。我们可以很容易地创建一个正则表达式来测试外部链接是否存在,如果发现则追加target="_blank"

首先创建:links.js

(function() {
  for (const link of document.getElementsByTagName('a')) {
    if (/^(https?:)?\/\//.test(link.getAttribute('href'))) link.target = '_blank';
  }
})();

在 include_footer.html 中添加脚本标签

<script type="text/javascript" src="links.js"></script>

在 _site.yml 中包含 include_footer

output:
  html_document:
    includes:
      after_body: include_footer.html

【讨论】:

  • 它看起来是一个优雅的解决方案,但我无法让它发挥作用。你在哪里保存 links.js?将其保存到页脚是否足够?
  • link.js 保存在与页脚相同的文件夹中。是的,如果你把js文件的内容放在页脚里面就可以了
  • @RockScience 如果你有一个 js 文件夹然后将其放入其中然后更改 script 标签的 src 属性
  • 谢谢!作为参考,我必须将links.js 移动到footer.html 的final 位置(即:在子文件夹/_site 内)。它现在就像一个魅力
【解决方案3】:

参考@Abdessabour Mtk 的JScode,

---  
title: "BookMark"  
output: html_document  
---  

```{r setup, include=FALSE}  
knitr::opts_chunk$set(echo = TRUE)  
library(knitr)  
```  

[google](https://www.google.com)  
...

```{js, echo=FALSE}  
(function() {  
  for (const link of document.getElementsByTagName('a')) {  
    if (/^(https?:)?\/\//.test(link.getAttribute('href'))) link.target = '_blank';  
  }  
})();  
```  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 2017-01-28
    相关资源
    最近更新 更多