首先自动添加wmode =“opaque”嵌入jQuery?

时间:2012-11-02 14:14:52

标签: javascript jquery youtube embed

我正在使用以下脚本将wmode =“opaque”添加到嵌入元素:

jQuery("iframe[src], embed[src]").each(function () {
    jQuery(this).prop("src", jQuery(this).prop("src") + "?wmode=opaque");
});

它工作正常,但在嵌入src的最后一个添加了wmode,如下所示:

http://www.youtube.com/embed/example?fs=1&feature=oembed?wmode=opaque

这并不能使它发挥作用。我希望它更准确,所以它添加了wmode作为嵌入链接之后的第一个属性,所以无论我如何通过embed url例如:

http://www.youtube.com/embed/example?fs=1&feature=oembed

脚本会像这样:

http://www.youtube.com/embed/example?wmode=opaque?fs=1&feature=oembed

任何帮助?

1 个答案:

答案 0 :(得分:1)

我认为你应该弥补这两个因素,因为

http://www.youtube.com/embed/example?wmode=opaque?fs=1&feature=oembed

也是错误的,只有第一个参数应该有?

所以,你可以尝试:

jQuery("iframe[src], embed[src]").each(function () {
    var url = jQuery(this).prop("src");
    if(url.search(/\?/) === -1) {
            jQuery(this).prop("src", url + "?wmode=opaque");
    } else {
            jQuery(this).prop("src", url + "&wmode=opaque");
    }
});

如果您希望代码更小,可以将if语句替换为:

 jQuery(this).prop("src", url + ((url.search(/\?/) === -1) ? url + "?wmode=opaque" : "&wmode=opaque"));

另外,我建议您查看Query string parameters(在我留下的链接中,或通过谷歌搜索)

修改

我不明白为什么你需要它在开始时,我很确定你只是不明白查询参数如何工作。 但是,这是代码:

jQuery("iframe[src], embed[src]").each(function () {
    var url = jQuery(this).prop("src");
        if(url.search(/\?/) === -1) {
            jQuery(this).prop("src", url + "?wmode=opaque");
        } else {
            var splittedUrl = url.split("?");
            jQuery(this).prop("src", splittedUrl[0] + "?wmodeopaque&" + splittedUrl[1]);
        }
});