是否有可能使用JavaScript来改变页面的元标签?

如果我把一个div放在头上并显示:none,那么就用JavaScript来显示它,这个工作吗?

编辑:

我有东西加载在AJAX。 而且,由于我的AJAX改变了网站的“主要”部分,我也想改变元标签。

是的,你可以做到这一点。

有一些有趣的用例:一些浏览器和插件parsingmeta元素,并改变他们的行为为不同的值。

例子

Skype:关掉电话号码parsing器

<meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE"> 

iPhone:closures电话号码parsing器

 <meta name="format-detection" content="telephone=no"> 

Google Chrome框架

 <meta http-equiv="X-UA-Compatible" content="chrome=1"> 

移动设备的视口定义

 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 

这个可以通过JavaScript来改变。 请参阅: 解决iPhone视口缩放错误

元描述

一些用户代理(例如Opera)使用书签描述。 您可以在此添加个性化内容。 例:

 <!DOCTYPE html> <title>Test</title> <meta name="description" content="this is old"> <script type='text/javascript' src='http://code.jquery.com/jquery-1.8.2.js'></script> <button>Change description</button> <script type='text/javascript'> $('button').on('click', function() { // Just replacing the value of the 'content' attribute will not work. $('meta[name=description]').remove(); $('head').append( '<meta name="description" content="this is new">' ); }); </script> 

所以,这不仅仅是关于search引擎。

你会用(使用jQuery):

 $('meta[name=author]').attr('content', 'New Author Name'); 

但是,这通常是毫无意义的,因为meta标签通常只在文档加载的时候被刮掉,通常不会执行任何JavaScript。

是的。

例如设置元描述:

 document.querySelector('meta[name="description"]').setAttribute("content", _desc); 

你可以改变元,例如,jQuery调用,就像这样:

 $('meta[name=keywords]').attr('content', new_keywords); $('meta[name=description]').attr('content', new_description); 

我认为现在确实很重要,因为谷歌表示 ,他们将通过#!hashes_escaped_fragment_调用索引ajax内容。 现在,他们可以validation它(甚至自动,无头的浏览器,请参阅上面提到的页面上的“创buildHTML快照”链接),所以我认为这是硬核SEO的人的方式。

它应该是这样的可能(或使用像$('meta[name=author]').attr("content"); )的jQuery:

 <html> <head> <title>Meta Data</title> <meta name="Author" content="Martin Webb"> <meta name="Author" content="AN Other"> <meta name="Description" content="A sample html file for extracting meta data"> <meta name="Keywords" content="JavaScript, DOM, W3C"> </head> <body> <script language="JavaScript"><!-- if (document.getElementsByName) { var metaArray = document.getElementsByName('Author'); for (var i=0; i<metaArray.length; i++) { document.write(metaArray[i].content + '<br>'); } var metaArray = document.getElementsByName('Description'); for (var i=0; i<metaArray.length; i++) { document.write(metaArray[i].content + '<br>'); } var metaArray = document.getElementsByName('Keywords'); for (var i=0; i<metaArray.length; i++) { document.write(metaArray[i].content + '<br>'); } } //--></script> </body> </html> 

meta-tags是dom的一部分,可以被访问和猜测,但是search引擎(meta-tags的主要消费者)不会看到这个改变,因为javascript不会被执行。 所以除非你改变了在浏览器中有意义的meta-tag(刷新),这可能没什么用处?

 $(document).ready(function() { $('meta[property="og:title"]').remove(); $('meta[property="og:description"]').remove(); $('meta[property="og:url"]').remove(); $("head").append('<meta property="og:title" content="blubb1">'); $("head").append('<meta property="og:description" content="blubb2">'); $("head").append('<meta property="og:url" content="blubb3">'); }); 
 var metaTag = document.getElementsByTagName('meta'); for (var i=0; i < metaTag.length; i++) { if (metaTag[i].getAttribute("http-equiv")=='refresh') metaTag[i].content = '666'; if (metaTag[i].getAttribute("name")=='Keywords') metaTag[i].content = 'js, solver'; } 

不,div是一个身体元素,而不是头元素

编辑:那么唯一的东西将要得到的是基础的HTML,而不是阿贾克斯修改之一。

是的,可以用Javascript添加元标记。 我做了我的例子

Android不尊重metatag去除?

但是,我不知道如何改变它,然后将其删除。 顺便说一句,在我的例子..当你点击“添加”button,它分别添加标签和视口的变化,但我不知道如何恢复它(在Android中删除它)..我希望有Android的萤火虫我看到发生了什么事 Firefox确实删除了标签。 如果有人对此有任何意见,请在我的问题中注明。

简单地为每个元标记示例添加和分配属性

 <meta id="mtlink" name="url" content=""> <meta id="mtdesc" name="description" content="" /> <meta id="mtkwrds" name="keywords" content="" /> 

现在像正常的div改变为前。 ñ点击

 <a href="#" onClick="changeTags(); return false;">Change Meta Tags</a> 

函数更改标签与jQuery

 function changeTags(){ $("#mtlink").attr("content","http://albup.com"); $("#mtdesc").attr("content","music all the time"); $("#mtkwrds").attr("content","mp3, download music, "); } 

有这个索引

 <link rel="opengraph" href="{http://yourPage.com/subdomain.php}"/> 

在ajaxfiles og中input:input“og:title”og:description和og:image

并添加这一点

 <link rel="origin" href={http://yourPage.com}/> 

然后在ajaxCall之后添加js

 FB.XFBML.parse(); 

编辑:然后,您可以显示正确的标题和图像到Facebook的txt / PHP的douments(我的名字只是.php作为扩展,但更多的txt文件)。 然后我在这些文件中有元标记,并且链接回到每个文档中的索引,也是每个子文件的索引文件中的元链接。

如果有人知道这样做的更好的方式,我将不胜感激任何补充:)

这似乎是一个刚性几​​何设置的应用程序,它需要运行在移动和其他浏览器几乎没有变化,所以find移动/非移动浏览器状态和手机设置视口到设备宽度是必要的。 由于脚本可以从头文件运行,下面的头文件中的js似乎改变了设备宽度的元标签在页面加载之前。 有人可能会注意到navigator.userAgent的使用被规定为实验性的。 脚本必须遵循metatag条目进行更改,因此必须select一些初始内容,然后在某些情况下进行更改。

 <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script> var userAgentHeader = navigator.userAgent ; var browserIsMobileOrNot = "mobileNOT" ; if( userAgentHeader.includes( "Mobi" ) ) { browserIsMobileOrNot = "mobileYES" ; //document.querySelector('meta[name="viewport"]').setAttribute( "content", "width=device-width, initial-scale=1.0" ); } else { browserIsMobileOrNot = "mobileNOT" ; document.querySelector('meta[name="viewport"]').setAttribute( "content", ""); } </script> <link rel="stylesheet" href="css/index.css"> 

。 。 。 。 。 。

绝对有可能使用Javascript来改变页面的元标记。 这是一个只有Javascript的方法:

 document.getElementsByTagName('meta')["keywords"].content = "My new meta tag for page keywords!!"; document.getElementsByTagName('meta')["description"].content = "My new meta tag for page description!!"; document.title = "My new document title!!"; console.log(document.getElementsByTagName('meta')["keywords"].content); console.log(document.getElementsByTagName('meta')["description"].content); console.log(document.title); 
 <!DOCTYPE hmtl> <html> <head> <title>Your Page Title</title> <meta name="description" content="Your page description"> <meta name="keywords" content="Your page keywords"> </head> <body> <h1>HOLLA!</h1> </body> </html>