使用linkyfy.js

时间:2015-08-28 09:27:12

标签: javascript jquery html

我正在尝试在网站上实现一个linkyfying脚本,该脚本会创建用文本写的URL链接。我正在使用此解决方案:https://github.com/SoapBox/linkifyjs

这是运行它(下载后)所需的:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="linkify.min.js"></script>
<script src="linkify-jquery.min.js"></script>
jQuery('#container').linkify();

这很好用,但我遇到了一个问题。在网站上我有时需要在容器中使用<style>@import("[URL]")</style>。我知道这在语义上不是正确的(它应该在head标签内),但它就是它,它是我们系统中某些情况下的唯一方法。

问题是如果linkyfy位于给定元素中,则链接会从导入src URL中创建一个链接,在这种情况下为&#34;#container&#34;。所以,然后linkyfy.js对@import执行此操作:

@import url("<a href="[URL]")" class="linkified" target="_blank">[URL]")</a>;

完全打破了@import。

所以我试着解决这个问题。我补充说:

jQuery('#container *').not( jQuery('style') ).each(function(){
    jQuery(this).linkify();
    //TESTING
    //jQuery(this).addClass('i-am-not-a-style-element');
});

出现了奇怪的(?)问题: 它仍然链接导入src URL。但是,如果我取消注释jQuery(this).addClass('i-am-not-a-style-element');,除了<style>元素之外,每个元素都会获得类&#34; i-am-not-a-style-element&#34;。所以看起来我的脚本可以工作,但是在运行函数时却没有。

我不明白为什么函数linkyfy();仍在上面的not()元素上运行。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这可以解决我的问题。这不是我的问题的答案。但这是一个解决方法,我在@Jasny - Arnold Daniels的回答后开始调查。这不会在body内部进行验证(仅显示):

<link type="text/css" rel="stylesheet" href="test.css" />

但是这会在property="stylesheet"内的HTML5(body)中验证,并且在IE9中有效:

<link rel="stylesheet" property="stylesheet" href="test.css">

通过这样做,linkify()只保留URL,因为它位于锚点内。