html - كلمات - هل يمكنني إنشاء روابط باستخدام "target="_blank "في Markdown؟




كلمات html (10)

أحد الحلول العامة هو وضع <base target="_blank"> في عنصر <head> بصفحتك. هذا يضيف بفعالية هدفًا افتراضيًا لكل عنصر الارتساء. أستخدم علامة مائلة لإنشاء محتوى على موقع ويب المستند إلى Wordpress ، وسيتيح لي أداة تخصيص السمة إدخال هذا الكود في أعلى كل صفحة. إذا لم يكن المظهر الخاص بك يقوم بذلك ، فهناك مكون plug-in

هل هناك طريقة لإنشاء رابط في Markdown يفتح في نافذة جديدة؟ إذا لم يكن كذلك ، فما هي الجملة التي تنصح بها للقيام بذلك. سأضيفه إلى المترجم الشريطي الذي أستخدمه. أعتقد أنه يجب أن يكون خيارًا.


أنا أستخدم Grav CMS وهذا يعمل بشكل مثالي:

الجسم / المحتوى:
Some text[1]

الجسم / المرجعي:
[1]: http://somelink.com/?target=_blank

ما عليك سوى التأكد من تمرير السمة الهدف أولاً ، إذا كانت هناك سمات إضافية في الرابط ، فانسخ / لصقها في نهاية عنوان URL المرجعي.

كما تعمل كوصلة مباشرة:
[Go to this page](http://somelink.com/?target=_blank)


بقدر ما يتعلق الأمر بناء الجملة Markdown ، إذا كنت ترغب في الحصول على ذلك التفصيلي ، سيكون عليك فقط استخدام HTML.

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

تسمح معظم محركات Markdown التي رأيتها بتنسيق HTML القديم ، فقط لمثل هذه المواقف حيث لن يقوم نظام العلامات العام فقط بقطعها. (محرك ، على سبيل المثال.) ثم يقومون بتشغيل المخرجات بالكامل من خلال مرشح القائمة البيضاء لـ HTML ، بغض النظر ، لأن مستند Markdown-only يمكن أن يحتوي بسهولة على هجمات XSS. على هذا النحو ، إذا كنت أنت أو مستخدميك يريدون إنشاء روابط _blank ، فمن المحتمل أنهم لا يزالون قادرين على ذلك.

إذا كانت هذه ميزة ستستخدمها كثيرًا ، فقد يكون من المنطقي إنشاء بنية خاصة بك ، ولكنها لا تعد ميزة أساسية بشكل عام. إذا كنت أرغب في إطلاق هذا الرابط في نافذة جديدة ، فسوف أضغط عليه بنقره بنفسي ، وذلك بفضل.


في مشروعي ، أفعل هذا ويعمل بشكل جيد:

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

Link

ولكن ليس كل المحللون يسمحون لك بذلك.


لا أوافق على أن تجربة المستخدم أفضل للبقاء ضمن علامة تبويب متصفح واحد. إذا كنت ترغب في أن يظل الأشخاص على موقعك أو يعودوا لإنهاء قراءة هذه المقالة ، فأرسلها في علامة تبويب جديدة.

بناءً على إجابة 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>

لا توجد طريقة سهلة لفعل ذلك ، ومثلما أشارalex ستحتاج إلى استخدام جافا سكريبت. إجابته هي الحل الأفضل ، ولكن من أجل تحسينها ، قد ترغب في تصفية روابط ما بعد المحتوى فقط.

<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.

نظرًا لأن المستخدم الذي أنشأ الروابط التي تم إنشاؤها باستخدام علامة التبويب موضعية ، يجب فتحها في علامة تبويب جديدة ولكن روابط المواقع تحتاج إلى البقاء في علامة التبويب لقد قمت بتغيير علامة مائلة لإنشاء الروابط التي تفتح في علامة تبويب جديدة فقط. لذلك لا يتم ربط جميع الروابط على الصفحة ، فقط تلك الروابط التي تستخدم العلامة التجارية.

لقد قمت بتغيير كل مخرجات الارتباط في <a target='_blank' href="..."> وهو أمر سهل بما فيه الكفاية باستخدام البحث / الاستبدال.


للرد الكامل على أليكس (ديسمبر 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');

يمكنك تغيير استثناءات regexp مع إضافة المزيد من الامتداد في مجموعة (?!html?|php3?|aspx?) المجموعة (فهم هذا regexp هنا: 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';
        } 
    }
}

يمكنك إجراء ذلك عبر شفرة جافا سكريبت الأصلية مثل:

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

كود JSFiddle


يمكنك إضافة أي سمات باستخدام {[attr] = "[prop]"}

على سبيل المثال [Google] ( http://www.google.com ) {target = "_ blank"}





new-window