我正在尝试在网站上实现一个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()
元素上运行。
非常感谢您的帮助!
答案 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,因为它位于锚点内。