我想编写一个javascript函数,其操作如下:
输入:Youtube视频ID(即F3v39wnv),高度,宽度和名称
操作:弹出一个具有指定名称宽度和高度的新窗口,显示指定的视频。
我已经想出了一个基本的方法(通过使用document.write())但我明白这会打开页面漏洞。
我是一名优秀的程序员,我对javascript一点也不熟悉。将参数传递给新网页的标准方法是什么?我已经能够让源页面生成带有所有指定参数的新窗口,如下所示:videoplayer.htm?vid =(VidID)?height =(height)?width =(width)?name =(name),但我无法从videoplayer.htm
中读取这些论点谢谢!
答案 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()函数将创建一个元素并将其附加到文档的主体