Javascript:视频弹出窗口

时间:2011-01-31 22:20:35

标签: javascript html css

我想编写一个javascript函数,其操作如下:

输入:Youtube视频ID(即F3v39wnv),高度,宽度和名称

操作:弹出一个具有指定名称宽度和高度的新窗口,显示指定的视频。

我已经想出了一个基本的方法(通过使用document.write())但我明白这会打开页面漏洞。

我是一名优秀的程序员,我对javascript一点也不熟悉。将参数传递给新网页的标准方法是什么?我已经能够让源页面生成带有所有指定参数的新窗口,如下所示:videoplayer.htm?vid =(VidID)?height =(height)?width =(width)?name =(name),但我无法从videoplayer.htm

中读取这些论点

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用window.location。更具体地说,window.location.pathname将返回主机名后面的所有内容。在这个页面中,那将是“questions / 4856801 / javascript-video-pop-up-window”

然后,您可以使用String.split方法将url拆分为其参数

var arguments = window.location.pathname.split("?")[1].split("&");

应将“videoplayer.htm?vid = 3& height = 4& width = 5”拆分为[“vid = 3”,“height = 4”,“width = 5”]

然后用“=”字符进一步分割每个参数应该给你一个标签=>值数组 “vid = 3”.split(“=”)变为[“vid”,“3”]


function fetchArguments() {
    var arg = window.location.pathname.split("?")[1].split("&"), // arguments
        len = arr.length, // length of arguments
        obj = {}, // object that maps argument id to argument value
        i, // iterator
        arr; // array

    for (var i = 0; i < len; i++) {
        arr = arg[i].split("="); // split our first argument
        obj[arr[0]] = arr[1]; // e.g. obj["vid"] = "3"
    }

    return obj;
}

function loadVideo() {
    var args = fetchArguments(),
        iframe = document.createElement("iframe");

    iframe.title = "YouTube video player";
    iframe.width = args["width"];
    iframe.height = args["height"];
    iframe.src = "youtube.com/embed/" + args["vid"];
    iframe.type = "text/html";
    iframe.className = "youtube-player";
    // I'm sure you get the idea

    document.getElementsByTagName("body")[0].appendChild(iframe); // we append the iframe to the document's body
}

所以我不确定你想用iframe做什么,但在我的例子中,loadVideo()函数将创建一个元素并将其附加到文档的主体