试图解决这个问题已经漫漫长夜。
我正在尝试加载一个小的文本文件,对其进行解析,然后使用该信息为用户提供视频选项。我在页面加载时执行此操作,但是我也会响应用户事件来执行此操作。在两种情况下,我都得到相同的结果。 load_playList函数不执行。
代码在下面。 window.load和selectVideo(X)例程是起点。在这两种情况下,都会忽略load_Playlist函数。
似乎load_playList从未执行。警报消息永远不会执行,但是脚本会像一切正常一样继续进行。好像我输入的函数名称错误,所以我这样做了,脚本失败了。因此,浏览器似乎看到了该功能,但忽略了它。
var videoList = [];
var videoTitles = [];
var videoCaptions = [];
/*
var videoList = [
'videos/ZionParkParade.mp4',
'videos/Pointless2014.mp4'];
var videoTitles = [
'The 50GT Zion Canyon Cruise',
'The Tinyvette at Sonoma Raceway'];
var videoCaptions = ['Caption 1','Caption 2'];
*/
window.onload = function()
{
alert(0);
load_playList; // Loads and parses a small text file.
alert(1);
load_video(0); // Set up the first video to play.
alert(2);
}
function load_playList()
{
alert('load_playList');
var listFile = ReadFile('videos/PlayList.txt');
var playList = listFile.split('\n');
var j = 0;
for (i = 0; i < math.trunc(playList.length / 3); i++)
{
videoList[i] = playList[j];
videoTitles[i] = playList[j+1];
videoCaptions[i] = playList[j+2];
j++;
j++;
j++
}
}
function selectVideo(X)
{
alert(10);
load_playList; // Loads and parses a small text file.
alert(11);
load_video(Number(X));
alert(12);
}
function FileRead(U)
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
X=new XMLHttpRequest();
}
else
{// code for IE6, IE5
X=new ActiveXObject("Microsoft.XMLHTTP");
}
X.open('GET', U, false );
X.setRequestHeader('Content-Type', 'text/html')
X.send();
return X.responseText;
}
function load_video(N)
{
var V = document.getElementById("video_player");
V.pause();
V.src = videoList[N];
V.auto = false;
V.type = "video/mp4";
// Update the title and captions.
document.getElementById('pause_button').innerHTML = "Play";
document.getElementById('videoTitle').innerHTML = videoTitles[N];
document.getElementById('videoCaption').innerHTML = videoCaptions[N];
}
如果我取消对初始变量声明的注释,请提供初始值,则所有工作都将正常进行,除非从未加载文本文件。
谢谢。
编辑-我在load_playList例程中发现了两个问题,但仍然无法运行该函数。我什至没有看到第一个警报。
我将load_playList代码粘贴到onload例程中,并且可以正常工作。我可以忍受,但是如果有任何意义的话就会让它感到生气。
window.onload = function()
{
// load_playList; // Loads and parses a small text file.
var listFile = load_file('videos/PlayList.txt');
var playList = listFile.split('\n');
var j = 0;
for (i = 0; i < Math.trunc(playList.length / 3); i++)
{
videoList[i] = playList[j];
videoTitles[i] = playList[j+1];
videoCaptions[i] = playList[j+2];
j++;
j++;
j++
}
load_video(0); // Set up the first video to play.
var vid = document.getElementById("video_player");
vid.volume = 0.2;
}
function load_playList()
{
alert(10);
var listFile = load_file('videos/PlayList.txt');
alert(11);
var playList = listFile.split('\n');
alert('Length = '+playList.length);
alert('Count = '+Math.trunc(playList.length / 3));
var j = 0;
for (i = 0; i < Math.trunc(playList.length / 3); i++)
{
videoList[i] = playList[j];
videoTitles[i] = playList[j+1];
videoCaptions[i] = playList[j+2];
j++;
j++;
j++
}
alert(12);
}
答案 0 :(得分:0)
答案 1 :(得分:0)
解决方法是将该例程的代码粘贴到onload例程中,但可以解决问题,但我对此并不满意,最终偶然发现了这种解决方案:
window.onload = function()
{
load_playList(0); // Loads and parses a small text file.
load_dropdown(0); // Populate the dropdown menu.
load_video(0); // Set up the first video to play.
var vid = document.getElementById("video_player");
vid.volume = 0.2;
}
load_playList和load_dropdown都不需要传递参数给我,但是我还是这么做了,
我不确定为什么会这样,但我会接受。