Markdownで新しいウィンドウで開くリンクを作成する方法はありますか?そうでない場合、どの構文を使用することをお勧めしますか。使用するマークダウンコンパイラに追加します。オプションだと思います。
s
を削除するhttps:
だけで十分な場合があります。
Markdownで新しいウィンドウで開くリンクを作成する方法はありますか?そうでない場合、どの構文を使用することをお勧めしますか。使用するマークダウンコンパイラに追加します。オプションだと思います。
s
を削除するhttps:
だけで十分な場合があります。
回答:
Markdown構文に関する限り、詳細を知りたい場合は、HTMLを使用する必要があります。
<a href="http://example.com/" target="_blank">Hello, world!</a>
私が見たほとんどのMarkdownエンジンは、このような一般的なテキストマークアップシステムではカットされない状況のために、プレーンな古いHTMLを許可します。(たとえば、StackOverflowエンジン)。MarkdownのみのドキュメントでさえXSS攻撃を簡単に含むことができるため、HTMLホワイトリストフィルターを介して出力全体を実行します。そのため、あなたやユーザーが_blank
リンクを作成したい場合でも、おそらくリンクは作成できます。
それが頻繁に使用する機能である場合は、独自の構文を作成することは理にかなっていますが、一般的に重要な機能ではありません。そのリンクを新しいウィンドウで起動したい場合は、Ctrlキーを押しながらクリックします。
[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';
}
}
jQueryを使用している場合は、少し簡単です...
$(document.links).filter(function() {
return this.hostname != window.location.hostname;
}).attr('target', '_blank');
Jakob Nielsen says you shouldn't do that
はひどい議論です。
Markdown-2.5.2では、これを使用できます。
[link](url){:target="_blank"}
私はGrav CMSを使用していますが、これは完全に機能します。
本文/内容:
Some text[1]
本文/リファレンス:
[1]: http://somelink.com/?target=_blank
ターゲット属性が最初に渡されることを確認してください。リンクに追加の属性がある場合は、それらを参照URLの末尾にコピーして貼り付けます。
直接リンクとしても機能します:
[Go to this page](http://somelink.com/?target=_blank)
ゴーストマークダウンの使用:
[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)
。多分私は何かを間違えます、またはこれはそのように働くためのメンターではありませんか?
したがって、Markdown URLにリンク属性を追加できないことは、必ずしも正しくありません。属性を追加するには、使用されている基になるマークダウンパーサーとその拡張機能を確認します。
特に、pandoc
有効link_attributes
にする拡張機能があり、リンクでのマークアップを許可します。例えば
[Hello, world!](http://example.com/){target="_blank"}
rmarkdown
、bookdown
、blogdown
など)、これはあなたがしたい構文です。pandoc
+link_attributes
注:これは、kramdown
パーサーのサポートとは異なります。これは、上記で受け入れられた回答の1つです。- 、特に注目すべきpandocからkramdown異なり、それはコロンを必要とするのでそれで:
-中括弧の開始時- {}
例えば、
[link](http://example.com){:hreflang="de"}
特に:
# Pandoc
{ attribute1="value1" attribute2="value2"}
# Kramdown
{: attribute1="value1" attribute2="value2"}
^
^ Colon
これは、次のようなネイティブのJavaScriptコードを使用して行うことができます。
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を使用するリンクだけがリンクアウトします。
マークダウンでは、すべてのリンク出力を変更しました<a target='_blank' href="...">
。これは、検索/置換を使用すると十分簡単です。
私は、1つのブラウザタブ内に留まることがより良いユーザーエクスペリエンスであることに同意しません。他のユーザーにサイトに留まるようにしたい場合や、戻ってその記事を読み終える場合は、新しいタブで送信してください。
@davidmorrowの答えに基づいて、このJavaScriptをサイトにスローし、外部リンクだけを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"}
完成したアレックスの回答(10/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?)
グループ構成に拡張を追加して、正規表現の例外を変更できます(この正規表現をここで理解してください: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
(X)HTMLがMarkdownから作成されたら、次のコマンドを実行できます。
sed -i 's|href="http|target="_blank" href="http|g' index.html
これは、上記のsed
コマンドをに追加することでさらに自動化できますmakefile
。詳細については、GNUを参照してくださいmake
か、私はことを行っている方法を見に私のウェブサイト。