Markdown에서 새 창에서 열리는 링크를 만드는 방법이 있습니까? 그렇지 않은 경우 어떤 구문을 권장합니다. 내가 사용하는 마크 다운 컴파일러에 추가하겠습니다. 나는 그것이 옵션이어야한다고 생각합니다.
s
(가)에서 https:
내가 원하는 기능을 얻을 충분하다가.
Markdown에서 새 창에서 열리는 링크를 만드는 방법이 있습니까? 그렇지 않은 경우 어떤 구문을 권장합니다. 내가 사용하는 마크 다운 컴파일러에 추가하겠습니다. 나는 그것이 옵션이어야한다고 생각합니다.
s
(가)에서 https:
내가 원하는 기능을 얻을 충분하다가.
답변:
Markdown 구문에 관한 한, 자세한 내용을 보려면 HTML을 사용해야합니다.
<a href="http://example.com/" target="_blank">Hello, world!</a>
내가 본 대부분의 Markdown 엔진은 일반적인 텍스트 마크 업 시스템이이를 차단하지 않는 이와 같은 상황에서 일반 HTML을 허용합니다. (예를 들어 StackOverflow 엔진) 마크 다운 전용 문서도 쉽게 XSS 공격을 포함 할 수 있기 때문에 HTML 화이트리스트 필터를 통해 전체 출력을 실행합니다. 따라서 귀하 또는 귀하의 사용자가 _blank
링크 를 작성하려는 경우 여전히 링크 를 작성할 수 있습니다.
이것이 자주 사용하는 기능인 경우 고유 한 구문을 작성하는 것이 합리적 일 수 있지만 일반적으로 중요한 기능은 아닙니다. 새 창에서 해당 링크를 시작하려면 직접 링크를 클릭하십시오. 감사합니다.
[Visit this page](http::/link.com(
을 제안 합니다 : 여는 아이디어를 얻습니다 .
Kramdown이 지원합니다. 표준 Markdown 구문과 호환되지만 많은 확장 기능도 있습니다. 다음과 같이 사용하십시오.
[link](url){:target="_blank"}
target="_blank"
마크 다운 기능이 없다고 생각합니다.
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';
}
}
jsFiddle .
jQuery를 사용하는 경우 조금 더 간단합니다 ...
$(document.links).filter(function() {
return this.hostname != window.location.hostname;
}).attr('target', '_blank');
jsFiddle .
Jakob Nielsen says you shouldn't do that
는 끔찍한 주장 이기 때문 입니다.
Markdown-2.5.2에서는 다음을 사용할 수 있습니다.
[link](url){:target="_blank"}
하나의 글로벌 솔루션은 <base target="_blank">
페이지 <head>
요소 에 넣는 것 입니다. 그러면 모든 앵커 요소에 기본 대상이 효과적으로 추가됩니다. 마크 다운을 사용하여 Wordpress 기반 웹 사이트에서 컨텐츠를 작성하며 테마 사용자 정의 프로그램을 사용하여 모든 페이지의 맨 위에 해당 코드를 삽입 할 수 있습니다. 테마가 그렇게하지 않으면 플러그인이 있습니다.
고스트 마크 다운 사용 :
[Google](https://google.com" target="_blank)
여기에서 찾았습니다 : https://cmatskas.com/open-external-links-in-a-new-window-ghost/
[open new window][1] \n [1]: (https://abc.xyz" target="_blank)
. 어쩌면 내가 무언가를 잘못 생각하거나, 그런 식으로 작동하지 않습니까?
따라서 마크 다운 URL에 링크 속성을 추가 할 수 없다는 것은 사실이 아닙니다. 속성을 추가하려면 사용중인 기본 markdown 파서와 해당 확장이 무엇인지 확인하십시오.
특히, 링크 pandoc
확장을 가능하게하는 enable 확장자가 있습니다 link_attributes
. 예 :
[Hello, world!](http://example.com/){target="_blank"}
rmarkdown
, bookdown
, blogdown
등), 이것은 당신이 원하는 구문입니다.pandoc
+link_attributes
참고 : 이것은 kramdown
파서의 지원과 는 다른 것으로, 위의 답변 중 하나입니다. - 특히, 참고 pandoc에서 kramdown의 다릅니다은 콜론 필요로하기 때문에 것을 :
- 중괄호의 시작 - {}
예를
[link](http://example.com){:hreflang="de"}
특히:
# Pandoc
{ attribute1="value1" attribute2="value2"}
# Kramdown
{: attribute1="value1" attribute2="value2"}
^
^ Colon
네이티브 자바 스크립트 코드를 통해 다음과 같이 할 수 있습니다.
var pattern = /a href=/g;
var sanitizedMarkDownText = rawMarkDownText.replace(pattern,"a target='_blank' href=");
내 프로젝트 에서이 작업을 수행하고 있으며 정상적으로 작동합니다.
[Link](https://example.org/ "title" target="_blank")
그러나 모든 파서가 그렇게 할 수있는 것은 아닙니다.
<a href="https://example.org/" rel="nofollow" title="title" target="_blank">Link</a>
쉽게 할 수있는 방법은 없으며 @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>
이 코드는 IE8 +와 호환되며 페이지 하단에 추가 할 수 있습니다. ".post-content a"를 게시물에 사용중인 클래스로 변경해야합니다.
여기에서 볼 수 있듯이 : http://blog.hubii.com/target-_blank-for-links-on-ghost/
PHP를 사용하여 markdown을 구현하려고 할 때이 문제가 발생했습니다.
마크 다운으로 생성 된 사용자 생성 링크는 새 탭에서 열어야하지만 사이트 링크는 탭으로 유지되어야하므로 마크 다운을 변경하여 새 탭에서 열리는 링크 만 생성했습니다. 따라서 페이지의 모든 링크가 링크되지 않고 마크 다운을 사용하는 링크 만 있습니다.
markdown에서 나는 모든 링크 출력을 <a target='_blank' href="...">
찾기 / 바꾸기를 사용하여 충분히 쉬운 것으로 변경했습니다.
하나의 브라우저 탭 내에 머무르는 것이 더 나은 사용자 경험이라는 데 동의하지 않습니다. 사람들이 귀하의 사이트에 머 무르거나 다시 기사를 읽도록하려면 새 탭으로 보내십시오.
@ davidmorrow의 답변을 바탕 으로이 자바 스크립트를 사이트에 던져 넣고 외부 링크 만 target = _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>
{[attr] = "[prop]"}을 사용하여 속성을 추가 할 수 있습니다
예를 들어 [Google] ( http://www.google.com ) {target = "_ blank"}
알렉스가 답변 함 (Dec 13 '10)
이 코드로 더 똑똑한 주입 대상을 만들 수 있습니다.
/*
* 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?)
그룹 구성에 확장을 추가하여 정규 표현식 예외를 변경할 수 있습니다 ( https://regex101.com/r/sE6gT9/3 ).
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';
}
}
}
모든 외부 링크에 대해 체계적 으로이 작업을 수행하려는 경우 CSS는 옵션이 없습니다 . 그러나 sed
Markdown에서 (X) HTML을 만든 후에 다음 명령을 실행할 수 있습니다 .
sed -i 's|href="http|target="_blank" href="http|g' index.html
위에 sed
명령을 추가하여 더 자동화 할 수 있습니다 makefile
. 자세한 내용은 GNU를 참조 make
하거나 내 웹 사이트 에서 GNU를 수행 한 방법을 참조하십시오 .