Javascript动态更改元数据/元标记

Javascript动态更改元数据/元标记,javascript,dynamic,iframe,metadata,meta-tags,Javascript,Dynamic,Iframe,Metadata,Meta Tags,我将描述我试图实现的目标,如果我的方法似乎很愚蠢,请随时告诉我: 我有一个带有视频库和flash视频播放器iframe的页面。当用户单击视频缩略图时,它开始在帧中播放 用户还可以通过将文件路径附加到url-blabla.com/videogallery?videofilepath的末尾,转到将特定视频加载到iframe的页面。我设置了这个,以便视频可以很容易地共享 我希望能够为facebook/twitter添加共享按钮,但我无法让它们正常工作,并使用正确的元数据(图像和标题)正确呈现自己 因此

我将描述我试图实现的目标,如果我的方法似乎很愚蠢,请随时告诉我:

我有一个带有视频库和flash视频播放器iframe的页面。当用户单击视频缩略图时,它开始在帧中播放

用户还可以通过将文件路径附加到url-blabla.com/videogallery?videofilepath的末尾,转到将特定视频加载到iframe的页面。我设置了这个,以便视频可以很容易地共享

我希望能够为facebook/twitter添加共享按钮,但我无法让它们正常工作,并使用正确的元数据(图像和标题)正确呈现自己

因此,我也在考虑将共享按钮放在播放器iframe中,然后在视频发生更改时动态更新元数据标记,但我不确定如何进行此操作


非常感谢您的帮助。

您可以使用this(jquery)在head标签中添加任何内容

$('head')。追加('');

您想在jQuery的代码中执行类似的操作吗

$(document).ready(function(){
    $('title').text("Your new title tag here");
    $('meta[name=description]').attr('content', 'new Meta Description here');
});

由于上述两个解决方案都使用JQuery,因此这里有一个纯javascript的解决方案,以防有人在寻找:

要更改标题,请执行以下操作:

<script>document.title = "this is title text";</script>
document.title=“这是标题文本”;
要更改任何元标记,请执行以下操作:

<meta name="description" content="this is old content which we are going to change through javascript">

更改上述元标记的javascript代码

<script>
var allMetaElements = document.getElementsByTagName('meta');
//loop through and find the element you want
for (var i=0; i<allMetaElements.length; i++) { 
  if (allMetaElements[i].getAttribute("name") == "Description") { 
     //make necessary changes
     allMetaElements[i].setAttribute('content', "description you want to include"); 
     //no need to continue loop after making changes.
     break;
  } 
} 

var allMetaElements=document.getElementsByTagName('meta');
//循环并找到所需的元素

对于(var i=0;i@bernabas用简单的JavaScript回答:


document.head.textContext+=''
纯javascript中的简短答案

document
      .getElementsByTagName('meta')
      .namedItem('description')
      .setAttribute('content','My Meta Description Here')

搜索引擎可以获得新的值吗?我尝试使用在线seo工具(),它没有得到js设置的值。更不用说已经得到了答案-蜘蛛无法读取它们,因此应该在服务器端生成元数据。简单而且有效!我正在寻找一种解决方案,将头添加到Meteor Iron路由器支持的应用程序中,并找到了各种复杂的解决方案。这非常有效。
document
      .getElementsByTagName('meta')
      .namedItem('description')
      .setAttribute('content','My Meta Description Here')