编辑:
我有一些通过AJAX加载的内容。当我的AJAX更改了网站的“主要”部分时,我也想同时更改meta标签。
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';
}
对于任何试图更改og:title元标记(或任何其他元标记)的人。我是通过以下方式实现的:
document.querySelector('meta[property="og:title"]').setAttribute("content", "Example with og title meta tag");
如果我们没有meta标签,我们可以使用以下方法:
var _desc = 'Out description';
var meta = document.createElement('meta');
meta.setAttribute('name', 'description');
meta.setAttribute('content', _desc);
document.getElementsByTagName('head')[0].appendChild(meta);
简单示例:为每个 meta 标签添加 add 和 div 属性
<meta id="mtlink" name="url" content="">
<meta id="mtdesc" name="description" content="" />
<meta id="mtkwrds" name="keywords" content="" />
现在像普通的div一样改变,例如点击n次
<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, ");
}
不,div是一个body元素,而不是head元素。
编辑:那么搜索引擎得到的只会是基本的HTML,而不是ajax修改后的HTML。
是的,可以使用Javascript添加元标记。我在我的示例中做到了
但是,除了删除它之外,我不知道如何更改它。顺便说一下,在我的示例中,当您单击“ADD”按钮时,它会添加标记并相应地更改视口,但我不知道如何将其恢复(在Android中删除它)。我希望有一个适用于Android的Firebug,这样我就可以看到发生了什么。Firefox确实会删除该标记。如果有人对此有任何想法,请在我的问题中注明。
var description=document.getElementsByTagName('h4')[0].innerHTML;
var link = document.createElement('meta');
link.setAttribute('name', 'description');
link.content = description;
document.getElementsByTagName('head')[0].appendChild(link);
var htwo=document.getElementsByTagName('h2');
var hthree=document.getElementsByTagName('h3');
var ls=[];
for(var i=0;i<hthree.length;i++){ls.push(htwo[i].innerHTML);}
for(var i=0;i<hthree.length;i++){ls.push(hthree[i].innerHTML);}
var keyword=ls.toString()
;
var keyw = document.createElement('meta');
keyw.setAttribute('name', 'keywords');
keyw.content = keyword;
document.getElementsByTagName('head')[0].appendChild(keyw);
这似乎适用于一个刚性几何设置的应用程序,在移动设备和其他浏览器上运行时需要很少更改,因此需要查找移动/非移动浏览器状态,并为移动设备设置视口宽度。由于脚本可以从头部运行,因此下面的js在头部似乎会更改设备宽度的元标记在页面加载之前。需要注意的是,使用navigator.userAgent被规定为实验性质。脚本必须跟随要更改的元标记条目,因此必须选择一些初始内容,然后根据某些条件进行更改。
<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">
. . . . . .
在索引中有这个
<link rel="opengraph" href="{http://yourPage.com/subdomain.php}"/>
在ajax文件中添加以下内容:
og:type"og:title"og:description和og:image
还需添加以下内容:
<link rel="origin" href={http://yourPage.com}/>
然后在 ajax 调用之后添加 js
FB.XFBML.parse();
编辑:然后您可以在txt/php文档中显示正确的Facebook标题和图像(我的文件只是以.php作为扩展名,但它们更像是txt文件)。 然后我在这些文件中有元标记,并且每个文档都有指向索引的链接,还有一个索引文件中的元链接用于每个子文件。
如果有人知道更好的方法,请告诉我,我会感激任何补充 :)
以下是使用普通 JavaScript 实现的方法。我用它来改变新 Safari 15 beta 中的标题颜色:
<html><head>
<meta id="themeColor" name="theme-color" content="">
</head><body><script>
var delay = 50;
var increment = 5;
var current = 0 - increment;
function setHeaderColor(){
current += increment;
if (current > 360) current = 0;
var colorStr = 'hsl('+current+',100%,50%)';
themeColor.content = colorStr;
textBlock.style.color = colorStr;
}
setInterval(setHeaderColor, delay);
</script><pre id="textBlock" style="font-size:30px;">
Needs Safari 15
</pre></body></html>
工作示例链接:blog.svija.love。