Javascript访问Blogger"搜索说明"元标记

时间:2015-10-24 23:52:32

标签: javascript meta-tags blogger

在我的主博客页面中,我展示了博客上帖子的描述。目前它只是帖子文本顶部的一个片段。

Blogger允许指定"搜索说明",它显示为元标记,例如

<meta content="This is what the post is really about." name="description">

如果帖子有搜索说明,我想展示一下,而不是代码段。但是,我无法获取帖子的搜索说明。

在JSON文档中,没有任何方法可以访问它。所以,我写了一些代码来从帖子中获取元标记,但经过几个小时的阅读和实验,我完全被挫败了。我可以获取博客主页的元标记,但我无法获取帖子的元标记(虽然我可以获得我想要的任何其他标记 - 例如img)检查帖子显示元标记,但我无法得到任何一个(描述或其他)。

这是一大堆代码。请注意,我已经尝试了100个不同版本,但没有运气,例如&#34; meta&#34;的变体,查看body,innerHTML,outerHTML,header等。还要注意我使用了很多额外的变量,因为我试图弄清楚发生了什么。对于无关的变量,空格等等,请不要太苛刻(虽然我必须承认我更喜欢它。)而且,为了简洁起见,我遗漏了处理从帖子中提取的数据的代码。

function showImgAndDescForPost(postId) 
{
var postT = document.getElementById(postId);
imgtag = "";
ifrtag = "";

img = postT.getElementsByTagName("img");
ifr = postT.getElementsByTagName("iframe");

// Get the description meta tag, if any
// BUGBUG: fails to get the meta tags.  Why?
var metas = postT.getElementsByTagName("meta");
mLen = metas.length;
var postdescr = "";
for (var iM=0; iM < mLen; iM++)
{
    metaattr = metas[iM].getAttribute('name');
    postdescr += metaattr + ' + ';
    if (metas[iM].getAttribute('name') == 'description')
    {
        postdescr = metas[iM].getAttribute('content');
        break;
    }
}

if (ifr.length >= 1)
    // deal with iframe
    else
        // deal with img

if (postdescr.length > 1)
    // deal with search description
else
    // get snippet of text for description
}

有没有人知道Blogger是否有内置方法来获取搜索说明?否则,任何人都知道我的代码有什么问题?

注意:这不是&#34;我如何从带有javascript的元标记中获取信息?&#34;我尝试了那个问题中提出的每个解决方案,但没有一个能够工作,因为我根本无法获得帖子的元标记。解析元标记不是问题。获取帖子页面的元标记是个问题[或者更好的是,如果Blogger有一个用于获取帖子搜索描述的API。]

fyi:代码适用于andrewsigal.blogspot.com,如果你想看到这些页面。

1 个答案:

答案 0 :(得分:0)

行。经过几个小时的研究,实验和劳动,我得出以下结论(如果我错了,请纠正我):

  1. Google已经实施了许多适用于&#34;帖子&#34; 记录的对象,例如innerHTML,textContent,snippet。
  2. Google没有为&#34; post&#34;实施多种方法。这将是有用的,并且是为#34;博客&#34;实现的,例如outerHTML,body,head等。
  3. 在任何地方都没有文档描述&#34; post&#34;的完整DOM。 Google的API文档已过时/不完整。找出是否实现给定方法的唯一方法是尝试它。
  4. Google已添加&#34;搜索说明&#34;博客帖子,但没有提供一种程序化的方式从帖子本身以外的页面获取它。 &#34;搜索说明&#34;存储在帖子标题中的元标记中,但只有内部HTML可以从其他页面(例如索引页面)访问,因此其他页面不可用。
  5. Google明确建议使用搜索说明,但由于未能在DOM中提供对其的编程访问权限而导致其实用程序瘫痪。
  6. 我为我的博客模板创建了一个解决方法,如下所示:我创建了自己的&#34; xmeta&#34;我放在帖子的HTML中的标签。我将搜索描述中的文本放入我的xmeta标签中。我编写了代码来从帖子的innerHTML中获取xmeta标签,并在需要搜索描述时使用其文本。

    当然,这完全是黑客攻击。它需要重复信息(将搜索描述放在实际的&#34;搜索描述&#34;以及我的xmeta标签中),并且容易出错,因为如果有人在一个地方更新了重复的文本,那么复制的文本可能会失去同步但不是另一个。

    叹息。