【问题标题】:each and not statement do not work properly with linkyfy.jseach and not 语句不能与 linkyfy.js 一起正常工作
【发布时间】: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();

这很好用,但我遇到了一个问题。在网站上,我有时必须在容器内使用&lt;style&gt;@import("[URL]")&lt;/style&gt;。我知道这在语义上是不正确的(它应该在 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”,&lt;style&gt; 元素除外。所以看来我的脚本可以工作,但在运行函数时却不行。

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

不胜感激!

【问题讨论】:

标签: javascript jquery html


【解决方案1】:

这解决了我的问题。这不是我问题的确切答案。但这是我在@Jasny - Arnold Daniels 的回答后开始研究的一种解决方法。这在body 内部不验证(只是为了展示):

&lt;link type="text/css" rel="stylesheet" href="test.css" /&gt;

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

&lt;link rel="stylesheet" property="stylesheet" href="test.css"&gt;

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

【讨论】:

    猜你喜欢
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-25
    • 2011-03-14
    • 2014-11-13
    • 2017-11-25
    • 1970-01-01
    相关资源
    最近更新 更多