我已将以下内容实施到我们的某个网站,以在外部链接旁边显示外部链接图标:
$(document).ready(function() {
$('#extlinks a').filter(function() {
return this.hostname && this.hostname !== location.hostname;
}).after(' <img src="/images/external.png" alt="external link"/>');
});
我们使用Business Catalyst,我希望它与设置服务器的方式无关,但如果从网址中删除www,则所有链接都显示为外部。
以下是一个示例:http://noosabiosphere.org.au/_blog/Environment_Blog
感谢。
答案 0 :(得分:1)
看起来链接正在使用www写在页面上。在前面,而不是相对链接。
this.hostname !== location.hostname
返回true。
答案 1 :(得分:0)
请确保链接以http://开头,我已使用以下链接对其进行了测试:
<ul style="list-style:none none outside;">
<li><a href="http://www.google.com">Google</a></li>
<li><a href="http://localhost/EnterKey.html">Enter Key</a></li>
<li><a href="www.microsoft.com">Microsoft</a></li>
<li><a href="http://stackoverflow.com/questions/">SO</a></li>
</ul>
<script type="text/javascript">
$(function(){
$("a").filter(function(){
return this.hostname && this.hostname !== location.hostname;
}).after("<img src='/images/extlink.gif'/>");
});
</script>
只有第一个(谷歌)和最后一个(SO)链接显示图像而不是第三个(MS)链接。
答案 2 :(得分:0)
使用以下代码,您可以使用$('a:external');
(function($) {
$.extend($.expr[':'], {
external: function(o) {
return o.hostname !== window.location.hostname && o.hostname;
}
});
$.fn.external = function() {
return this.filter(':external');
};
}(this.jQuery));
关于以协议(http://)开头的链接,您应该对所有外部链接执行此操作,否则大多数浏览器会将其视为内部链接并添加域名。