1

我正在使用以下脚本将 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 添加为嵌入链接之后的第一个属性,因此无论我如何通过嵌入 URL,例如:

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

该脚本将使其如下所示:

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

有什么帮助吗?

4

1 回答 1

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"));

另外我建议您查看查询字符串参数(在我留下的链接中,或在谷歌上搜索)

编辑

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

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]);
        }
});
于 2012-11-02T14:25:28.973 回答