2013-09-03 3 views
0

Я хочу знать, как использовать этот сценарий в моем случае >>>https://stackoverflow.com/a/3890175/1503192 ...Как преобразовать URL-адрес в гиперссылку с помощью этого скрипта?

Это мой jsfiddle >>>jsfiddle.net/kZfGV/134/

HTML:

<body onLoad="linkify(inputText)"> 
    https://google.com/<br />  
    http://google.com/<br /> 
    https://www.google.com/<br /> 
    http://www.google.com/<br /> 
    www.google.com<br /> 
    www.google.com<br /> 
    [email protected] 
</body> 

JS :

function linkify(inputText) { 
    var replacedText, replacePattern1, replacePattern2, replacePattern3; 

    //URLs starting with http://, https://, or ftp:// 
    replacePattern1 = /(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim; 
    replacedText = inputText.replace(replacePattern1, '<a href="$1" target="_blank">$1</a>'); 

    //URLs starting with "www." (without // before it, or it'd re-link the ones done above). 
    replacePattern2 = /(^|[^\/])(www\.[\S]+(\b|$))/gim; 
    replacedText = replacedText.replace(replacePattern2, '$1<a href="http://$2" target="_blank">$2</a>'); 

    //Change email addresses to mailto:: links. 
    replacePattern3 = /(\[email protected][a-zA-Z_]+?\.[a-zA-Z]{2,6})/gim; 
    replacedText = replacedText.replace(replacePattern3, '<a href="mailto:$1">$1</a>'); 

    return replacedText; 
} 

Я пробовал это в jsfiddle, но я до сих пор не могу понять это, прежде чем я его много раз пробовал в своем блоге. Также я ищу это в stackoverflow и google, но ничего не работает. Я новичок в этой области. Plz помогите мне, ребята. Благодаря

+2

Вам необходимо передать 'inputText' в функцию. –

ответ

0

попробовать это:

<!-- jquery and linkify includes here --> 
    <script> 
    $(function() { 
    var body = $('body'); 
    body.html(linkify(body.html())); 
    }) 
    </script> 
    <body> ... 
2

Прежде всего, вы не то, что предписанных в технических заданиях ввода текста в функции linkify.

Во-вторых, вы используете возвращаемое значение.

Рабочий пример является http://jsfiddle.net/T7ANY/

И сценарий выглядит следующим образом (без JQuery или любого другого плагина)

function linkify(inputText) { 
    var replacedText, replacePattern1, replacePattern2, replacePattern3; 

    //URLs starting with http://, https://, or ftp:// 
    replacePattern1 = /(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim; 
    replacedText = inputText.replace(replacePattern1, '<a href="$1" target="_blank">$1</a>'); 

    //URLs starting with "www." (without // before it, or it'd re-link the ones done above). 
    replacePattern2 = /(^|[^\/])(www\.[\S]+(\b|$))/gim; 
    replacedText = replacedText.replace(replacePattern2, '$1<a href="http://$2" target="_blank">$2</a>'); 

    //Change email addresses to mailto:: links. 
    replacePattern3 = /(\[email protected][a-zA-Z_]+?\.[a-zA-Z]{2,6})/gim; 
    replacedText = replacedText.replace(replacePattern3, '<a href="mailto:$1">$1</a>'); 

    return replacedText; 
} 

document.body.innerHTML = linkify(document.body.innerHTML) 
2

http://jsfiddle.net/kZfGV/137/

HTML:

<span class="linkify">https://google.com/</span><br />  
<span class="linkify">http://google.com/</span><br /> 
<span class="linkify">https://www.google.com/</span><br /> 
<span class="linkify">http://www.google.com/</span><br /> 
<span class="linkify">www.google.com</span><br /> 
<span class="linkify">www.google.com</span><br /> 
<span class="linkify">[email protected]</span> 

JavaScript:

$(document).ready(function() 
{ 
    $(".linkify").text(function(){ 
     return linkify($(this).text()); 
    }); 
}); 
+0

should'nt это '$ (". Linkify "). Html (...'? – BiAiB

+0

.html() получит весь dom изнутри элемента, в то время как .text() получит только текст и пропускает любой другой HTML внутри этого элемента. Поскольку я предположил, что мы будем работать с чистым текстом внутри этих тегов, .text() в порядке. –