【问题标题】:How to replace src attribute of embed tag using JavaScript?如何使用 JavaScript 替换 embed 标签的 src 属性?
【发布时间】:2013-05-20 14:39:22
【问题描述】:

在我的网页中,我正在插入一个 youtube 视频,如下所示:

<object width="640" height="360">
            <param name="movie" value="https://www.youtube.com/v/M7lc1UVf-VE?version=3"></param>
            <param name="allowFullScreen" value="true"></param>
            <param name="allowScriptAccess" value="always"></param>
            <embed src="https://www.youtube.com/v/M7lc1UVf-VE?version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"></embed>
</object>

现在我必须替换 embed 标签内的 src 属性。为此,我编写了 JS 函数:

function replaceSrc()
    {
    document.getElementsByTagName("embed")[0].src = "new_link";
    }

if (window.addEventListener){
     window.addEventListener('load', replaceSrc, false);
    } else if (window.attachEvent) {
     window.attachEvent('onload', replaceSrc);
    }

但是,这不起作用,加载页面后,youtube 链接保持不变。有什么建议么?我曾用类似的内容回答过以前的问题,但他们大多使用 JQuery,在我的情况下需要 JavaScript。

【问题讨论】:

  • 你想做什么?因为更改 src 属性将不会加载另一部 youtube 电影,如果这是您的目的的话。请参阅此示例:jsfiddle.net/94bEm
  • @David 是的,我想更改属性并使用新链接加载 youtube 电影。那我错过了什么?
  • @MichalB 更改src 属性不是解决方案。您可能应该在问题中提及您要完成的工作。

标签: javascript youtube embed src


【解决方案1】:

如果您在嵌入标签中加载新视频,则需要使用新的 src 创建一个新的 embed 元素,然后替换旧的:

function replaceSrc() {
    var elem = document.getElementsByTagName("embed")[0],
        copy = elem.cloneNode();
    copy.src = "new_link";
    elem.parentNode.replaceChild(copy, elem);
}

请注意,这只需要处理 embed,您可能还需要处理 object 参数。

【讨论】:

  • 你的意思是我也必须重新创建对象元素?
  • @MichalB 可能,是的,但它可能会变得混乱。如果您的问题是“如何在运行时使用 javascript 加载不同的 youtube 电影”,我根本不会建议这条路线 - 我会使用 youtube API。因此,您可能想退后一步,尝试另一种方式,以免最终“破解”太多。
猜你喜欢
  • 2011-05-13
  • 1970-01-01
  • 1970-01-01
  • 2013-07-16
  • 1970-01-01
  • 2023-03-09
  • 2013-06-17
  • 2011-10-02
  • 2011-01-30
相关资源
最近更新 更多