我有一个网站,我通过元标记将信息提供给分析引擎:
<meta property="analytics-track" content="Hey There!">
我正在尝试编写一个JavaScript脚本(没有库)来访问内容部分并按原样检索信息。本质上,它应该包含HTML实体,而不是转换/剥离它。
原因是我使用PhantomJS来检查哪些页面在元数据中有HTML实体,并在它们搞砸我的分析数据时删除它们(例如,我将包含同时包含Hey There!
和Hey There!
实际上它们都是同一页面,因此不应该有两个单独的数据点。)
我最简单的JS格式是:
document.getElementsByTagName('meta')[4].getAttribute("content")
当我在控制台上检查它时,它会以下列格式返回文本:
"Hey There!"
我希望它返回的是:
"Hey There!"
如何确保返回的数据将保留HTML实体。如果那是不可能的,有没有办法通过JavaScript检测HTML实体。我试过了:
document.getElementsByTagName('meta')[4].getAttribute("content").includes(' ')
但它返回false
答案 0 :(得分:4)
使用queryselector选择具有属性值&#34; analytics-track&#34;,outerHTML的元素以将元素作为String并匹配以使用Regex选择内容属性的未解析值。
document.querySelector('[property=analytics-track]').outerHTML.match(/content="(.*)"/)[1];
答案 1 :(得分:2)
你不能,
并不存在。它只是一个不间断空间的编码。对于文档,DOM,网页,对所有内容,它看起来像:
Hey There!
y
和T
之间的字符不是通过点击空格键获得的那种空格,而是一个完全不同的字符。
<span id='a' data-a='Hey There!'></span>
<span id='a1' data-a='Hey There!'></span>
<span id='b' data-b='Hey There!'></span>
var a = document.getElementById('a').getAttribute('data-a')
var a1 = document.getElementById('a1').getAttribute('data-a')
var b = document.getElementById('b').getAttribute('data-b')
console.log(a,b,a==b)
console.log(a,a1,a==a1)
给出:
Hey There! Hey There! false
Hey There! Hey There! true
相反,请考虑将您的“平等”方法改为view a space and a non-breaking space as equal:
var re = '/(\xC2\xA0/| )';
x = x.replace(re, ' ');
答案 2 :(得分:1)
要按原样获取元标记的HTML,请使用outerHTML
:
document.getElementsByTagName('meta')[4].outerHTML
工作代码段:
console.log(document.getElementsByTagName('meta')[0].outerHTML);
&#13;
<meta property="analytics-track" content="Hey There!">
<h3>Check your console</h3>
&#13;
Element.outerHTML - Web APIs | MDN
更新1:
要过滤掉元内容,请使用以下内容:
metaInfo.match(/content="(.*)">/)[1]; // assuming that content attribute is always at the end of the meta tag
工作代码段:
var metaInfo = document.getElementsByTagName('meta')[0].outerHTML;
console.log(metaInfo);
console.log('Meta Content = ' + metaInfo.match(/content="(.*)">/)[1]);
&#13;
<meta property="analytics-track" content="Hey There!">
<h3>Check your console</h3>
&#13;