【发布时间】:2015-08-28 09:27:11
【问题描述】:
我正在尝试在网站上实现一个链接脚本,该脚本会根据以文本形式编写的 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 标签内),但它就是这样,并且在某些情况下它是我们系统中的唯一方法。
问题在于,如果 import src URL 在给定元素内,linkyfy 会创建一个链接,在本例中为“#container”。那么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');
});
奇怪的(?)问题来了:
它仍然链接导入源 URL。但是如果我取消注释jQuery(this).addClass('i-am-not-a-style-element');,每个元素都会获得类“i-am-not-a-style-element”,<style> 元素除外。所以看来我的脚本可以工作,但在运行函数时却不行。
我不明白为什么函数 linkyfy(); 仍然在上面的 not() 元素上运行。
不胜感激!
【问题讨论】:
-
它是否在 IE9 中验证和工作?
-
我的意思是
<link rel="stylesheet" href="[URL]">。 developer.mozilla.org/en/docs/Web/HTML/Element/link
标签: javascript jquery html