利用js查找页面中的内链,外链
起初没听说过内链外链,只有链接锚文本,在面试中被问到如何查找到页面中的内链和外链,就在想,什么是内链和外链啊???????
后来面试官给我解释了一下他们的区别,自己稍微懂了,自己当时回答的是通过获取a标签的href属性,查找字符串中是否存在href,后来又被问到如果用选择器怎么用呢?自己不会....
后来下来又想到这个问题,觉得自己猪啊,有属性选择器来匹配,但是当时为什么回答不上来,因为这个是css3中的,自己只知道,但是不太经常用,所以第一反应没有想到,归根结底还是个熟练度的问题,没有达到熟悉的程度!
这里粘贴一下属性选择
| 选择器 | 描述 |
|---|---|
| [attribute] | 用于选取带有指定属性的元素。 |
| [attribute=value] | 用于选取带有指定属性和值的元素。 |
| [attribute~=value] | 用于选取属性值中包含指定词汇的元素。 |
| [attribute|=value] | 用于选取带有以指定值开头的属性值的元素,该值必须是整个单词。 |
| [attribute^=value] | 匹配属性值以指定值开头的每个元素。 |
| [attribute$=value] | 匹配属性值以指定值结尾的每个元素。 |
| [attribute*=value] | 匹配属性值中包含指定值的每个元素。 |
自己去网上查了一下关于内链和外链,很多讨论的都是如何提高网站的排名,和网站的优化问题,那么如何查找到内链和外链的数量呢?提供的答案是用站长工具,哈哈,不是我想要的,就贴出自己的想法吧,可能有缺陷,但能实现一定的功能
下面用自己的话通俗解释一下这些概念,自己比较讨厌官方那些比较生涩的词汇,不接地气
内链:就是自己网站内部的链接,可以跳转到自己网站内部其它页面的锚文本(超链接),如导航等....比如:<?php echo site_url('former/services');?>,这是phpCI框架形式的,其它有自己的样式,或者a标签的href=“#”或者href="javascript:void(0)"或href="javascript:"等也属于内链
外链:外链暂时自己了解到有三种类型:
- 锚文本(一个词或一句话有自己的链接,是链接到其他网站的,一般是http:做开头的)
- 纯文本链接(就如我们写文章或发博客时直接贴出来一个链接,如我现在贴我的博客地址http://www.cnblogs.com/lpshan/,它只是个链接地址,但点击不能到达目的地,自己需要粘贴到地址栏中)
- 反链(假设有两个页面A和B,B页面通过一个链接指向A页面,那么,B就是A的一个反链,做排名优化时有这样一句话“内链为王,外链为皇”)
<script type="text/javascript">
$(document).ready(function(e) {
var allLink=$("a").length; //a标签的总数
var wLink=$("a[href^='http:']").length;//外链
var nLink=$("a[href^='<?php']").length;//内链 var bodyString=$("body").html();
var bodyLink=(nr.split('http')).length-1; //body内的外链 alert("bodyLink"+bodyLink+"总链有:"+allLink+"外链有:"+wLink+",内链有:"+nLink);
});
</script>
写了一个bodyLink因为自己有疑问,反链中的纯文本链接,地址不在a标签的href属性中,所以对于$("a[href^='http:']").length,纯文本链接外链就查不到,所以想了下面一种方法,把body中的内容按照字符串的形式获取,再从字符串中获取http字符,但是这样有个问题需要注意,他会获取body内的所有,包括注释掉的,也是有弊端吧。
至于上面的内链获取,可以获得总连接数-外链,因为有的a标签的href=“#”或者href="javascript:void(0)"或href="javascript:"等也属于内链。
感觉面试后虽然面试官问我了没几个问题,但是引导我又学到了好几个知识,很感谢,;-)
自己在学校没人引导,自己误打误撞的学学这学学那,觉得提高的很有局限,学前端除了自己学,写项目外,最好也有人去引导,这样提高的着会相对快一些
利用js查找页面中的内链,外链的更多相关文章
- UWP 利用VisualTreeHelper查找页面中的元素
一般我们在展示数据的时候,都会采用DataTemplate的预先设置数据模板,再使用Set ItemsSource的方式进行数据绑定 这样就能满足大部分的需求. 不过有时候需要对页面已经展示出来的元素 ...
- 利用JS将页面中包含“一个”字段值的元素改为红色
document.body.innerHTML = document.body.innerHTML.replace(/一个/ig,"<span style='color: red;'& ...
- 用JS改变页面中b标签的样式啊 样式的等
用JS改变页面中b标签的样式啊 样式的等 ,实际上是在标签内加上样式 ,用媒体查询的话 ,不能生效 <!DOCTYPE html> <html lang="en&qu ...
- JS基础入门篇( 三 )—使用JS获取页面中某个元素的4种方法以及之间的差别( 一 )
1.使用JS获取页面中某个元素的4种方法 1.通过id名获取元素 document.getElementById("id名"); 2.通过class名获取元素 document.g ...
- js 查找数组中某个字符出现的次数
1. js 查找数组中某个字符出现的次数 代码示例 let arr = ['asd', 'green', 'yeadt', 'red', 'wati', 'red', 'red'] let index ...
- 找到你的位置(JS在页面中的位置)最常用的方式是在页面中head部分放置<script>元素,浏览器解析head部分就会执行这个代码,然后才解析页面的其余部分
找到你的位置(JS在页面中的位置) 我们可以将JavaScript代码放在html文件中任何位置,但是我们一般放在网页的head或者body部分. 放在<head>部分 最常用的方式是在页 ...
- js对页面中的内容进行拼音搜索,只对后台已经传过来的页面数据进行索引
实现输入拼音(可以使用拼音首字母来查),来查询出已经存在于页面的数据 注意:这种写法只能适用于页面中已经存在的数据进行检索,大体意思是将本页内的数据拼接成一个字符串,然后通过该字符串去检索匹配的字符串 ...
- JS查找字符串中出现次数最多的字符
本文给大家带来两种js中查找字符串中出现次数最多的字符,在这两种方法中小编推荐使用第二种,对js查找字符串出现次数的相关知识感兴趣的朋友一起看看吧 在一个字符串中,如 'zhaochucichuz ...
- JS - 查找同辈中的对象
今天在使用parent().find(".a:first")的时候,发现查找结果非正常按照顺序来的.有点递归的感觉,从底层往上. 因为需要的是同级的对象,所以去查了一下jquery ...
随机推荐
- 52. 不用+、-、×、÷做加法[add two numbers without arithmetic]
[本文链接] http://www.cnblogs.com/hellogiser/p/add-two-numbers-without-arithmetic.html [题目] 写一个函数,求两个整数的 ...
- mysql character set exception
问题: 插入数据时,报了这样一个错误:“_mysql_exceptions.Warning: Incorrect string value: ‘\xE6\xB5\x81\xE8\xA1\x8C…’ f ...
- phpstudy 局域网访问
安装mantis缺陷管理系统,我使用的是phpstudy集成环境.之前使用wamp,同事说phpstudy好更新php版本,所有就用phpstudy了. 今天安装好phpstudy,下载mantis安 ...
- 远程ssh登陆时报错:/bin/bash: Permission denied
远程普通用户ssh登录时,提示/bin/bash: Permission denied,用户名mas,密码正确. 首先上个图,用户远程登录步骤,转自http://www.tldp.org/LDP/LG ...
- vs2013在使用ReportView11时遇到的问题
最近在做项目中用到2013中的ReportView11 在本机IIS中使用完全没问题 但是放到服务器上总是出问题 解决办法:(1)首先在自己机器上开发的时候 是不用引用 Microsoft.R ...
- 解决VMware虚拟机宿主机与虚拟机通讯慢
本地连接--> 属性 --> 配置(C) -->高级 页面的属性框中找到"Large Send Offload"(中文名称叫:大量传送减负)==>Disab ...
- CSS网页制作常用标签
做了一个简单的网页,从布局到加内容,遇到了很多小问题.很多标签和属性都不会用或者忘记了.所以以此记录一下. 一.如何将边框四角变圆?(或做一个圆形) 顾名思义,如果要更改边框的角需要用到边框(bord ...
- Python-类的属性
类的属性,可以称为成员变量 类的方法,可以称为成员函数 对象的创建 - 创建对象的过程称之为实例化:当一个对象被创建后,包含三个方面的特性:对象句柄.属性和方法. - 句柄用于区分不同的对象(实例 ...
- CMD批处理延时启动的几个方法
批处理延时启动的几个方法 方法一:ping 缺点:时间精度为1秒,不够精确 @echo off @ping 127.0.0.1 -n 6 >nul start gdh.txt 方法二:vbs s ...
- ubuntu14.04下配置Java环境以及安装最新版本的eclipse
首先是配置JDK 步骤一:下载最新版本的JDK,链接:http://www.oracle.com/technetwork/java/javase/downloads/index.html 步骤二:首先 ...