如果我将div放在头并显示:none,而不是使用JavaScript来显示它,这行得通吗?
编辑:
我已经在AJAX中加载了东西。当我的AJAX更改网站的“主要”部分时,我也想更改元标记。
如果我将div放在头并显示:none,而不是使用JavaScript来显示它,这行得通吗?
编辑:
我已经在AJAX中加载了东西。当我的AJAX更改网站的“主要”部分时,我也想更改元标记。
Answers:
是的,你可以这样做。
有一些有趣的用例:一些浏览器和插件会解析元元素,并将其行为更改为不同的值。
<meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE">
<meta name="format-detection" content="telephone=no">
<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>
因此,这不仅与搜索引擎有关。
keywords
and description
。
document.write
在页眉中执行此操作,一旦加载页面,现在更改它为时已晚,因为Skype已经破坏了DOM,这太可怕了!
$('meta[property="og:title"]').replaceWith('<meta property="og:title" content="New Title">');
const meta = document.querySelector('meta[name=theme-color]'); meta.setAttribute("content", colors[slideIndex]);
Android上的Chrome浏览器检测到更新并更改颜色
是的。
例如,设置元描述:
document.querySelector('meta[name="description"]').setAttribute("content", _desc);
property
属性,而不是name
属性,例如meta[property="og:title"]
您将使用类似(使用jQuery)的方法:
$('meta[name=author]').attr('content', 'New Author Name');
但这几乎没有意义,因为通常仅在加载文档时才刮掉meta标签,通常不执行任何JavaScript。
$('meta[property=og:somestuff]')
,由于冒号,我怀疑它会与jQuery选择语法冲突。
您可以使用例如jQuery调用来更改meta,如下所示:
$('meta[name=keywords]').attr('content', new_keywords);
$('meta[name=description]').attr('content', new_description);
我认为这确实很重要,因为Google 表示他们将通过#!hashes
和_escaped_fragment_
调用为Ajax内容编制索引。现在,他们可以进行验证(即使使用无头浏览器也可以自动进行验证,请参见上面提到的页面上的“创建HTML快照”链接),所以我认为这是SEO核心人士的方法。
绝对可以使用Java脚本来更改页面的meta标签。这是仅使用Javascript的方法:
document.getElementsByTagName('meta')["keywords"].content = "My new page keywords!!";
document.getElementsByTagName('meta')["description"].content = "My new page description!!";
document.title = "My new Document Title!!";
我已验证Google确实为上述代码索引了这些客户端更改。
element = collection[name]
语法。
元标记是dom的一部分,可以访问并进行-i猜测-更改,但是搜索引擎(元标记的主要使用者)不会看到更改,因为不会执行javascript。因此,除非您要更改在浏览器中具有影响力的元标记(让人想到刷新),否则这可能没有什么用处?
应该像这样(或使用jQuery $('meta[name=author]').attr("content");
):
<html>
<head>
<title>Meta Data</title>
<meta name="Author" content="Martin Webb">
<meta name="Author" content="A.N. 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>
$(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">');
});
jQuery('meta[property="og:title"]').attr('content', "blubb1");
您可以使用更简单,更轻便的解决方案:
document.head.querySelector('meta[name="description"]').content = _desc
简单地将add和div归因于每个meta标签示例
<meta id="mtlink" name="url" content="">
<meta id="mtdesc" name="description" content="" />
<meta id="mtkwrds" name="keywords" content="" />
现在就像正常的div更改为ex。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, ");
}
对于任何试图更改og:title元标记(或其他任何标记)的人。我设法做到这一点:
document.querySelector('meta[property="og:title"]').setAttribute("content", "Example with og title meta tag");
请注意,“ meta [property =“ og:title”]”包含单词“ PROPERTY”而不是“ NAME”。
是的,可以使用Javascript添加元标记。我在我的例子中做了
但是,我不知道如何更改它,然后再将其删除。顺便说一句,在我的示例中..当您单击“添加”按钮时,它分别添加了标记和视口更改,但是我不知道如何将其还原(在Android中将其删除)。我看到发生了什么事。Firefox确实删除了标签。如果有人对此有任何想法,请在我的问题中注明。
有这个索引
<link rel="opengraph" href="{http://yourPage.com/subdomain.php}"/>
在ajaxfiles中具有og:type“ og:title” og:description和og:image
并添加这个
<link rel="origin" href={http://yourPage.com}/>
然后在ajaxCall之后添加js
FB.XFBML.parse();
编辑:然后您可以在txt / php douments中向Facebook显示正确的标题和图像(我的扩展名只是.php,但更多的txt文件)。然后,我在这些文件中具有meta标记,并且在每个文档中都有指向索引的链接,在每个子文件的索引文件中也都有meta链接。
如果有人知道更好的方法,我将不胜感激:)
这似乎适用于一些几何形状固定的应用程序,该应用程序需要在移动浏览器和其他浏览器上运行时几乎不需要更改,因此需要查找移动/非移动浏览器状态,并且对于移动设备,需要将视口设置为设备宽度。由于可以从标头运行脚本,因此标头下面的js似乎在页面加载之前更改了设备宽度的元标记。可能有人注意到,将navigator.userAgent的使用规定为实验性的。该脚本必须跟随要更改的metatag条目,因此必须选择一些初始内容,然后在某些条件下进行更改。
<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">
。。。。。。