我需要在下载完每一位后触发一段代码。如果在加载完所有内容后注入该脚本,但该如何自动触发?
我的脚本是:
var divId = "jwplayer-0_wrapper";
if ($('#' + divId).length == 1) {
myReg = /https?:\/\/www\.youtube\.com\/watch\?v=[^"]+/;
var plainText = $('#' + divId).parent().children('script').text();
var url = plainText.match(myReg);
if (url !== null) {
window.location = url;
};
};
它用于跳过某个决定使用JW播放器的网站,我发现可怕的马车。所以它会找到一个带有JW播放器指示的div,如果有的话,它会找到原始youtube视频的链接并直接进入那里。
由Google Chrome加载项启动,名为Javascript Injector,我在我访问的每个页面上应用该脚本。插件在www.ayoye.co和www.veuxturire.com等网站上运行良好。但在其他使用相同功能的网站上,似乎脚本过早触发了。例如,www.mondedestars.com和www.lesautos.ca会过早触发它。
如果我在页面加载完成后使用“立即注入”功能,那么它会按预期将我重定向到youtube页面。我迷失了为什么它在某些地方工作而不是其他地方。
我不想在这里理解每一个网站,我更喜欢在页面完成从php,ajax,脚本,flash,html和CSS加载所有内容后动态触发。
我试着看看JWplayer API,但是由于它非常不清楚,因为它在闪存中的部分事实,如果有一种方法可以触发它,或者可能只是触发它,它会变得更简单在我盘旋在身体上之后,因为每个站点都有一个身体。它不能专门针对一个页面。
答案 0 :(得分:1)
使用类似的东西
var timer;
function injectYouTube() {
// DO YOUR STUFF HERE
// ONCE DONE CALL clearInterval(timer);
clearInterval(timer);
}
timer = setInterval(injectYouTube, 2000);
我并不是说在加载完所有内容后会调用它,而是可以确保在需要时执行代码。
答案 1 :(得分:1)
JWPlayer API并不困难。即使不知道容器ID,您也可以检索所需的信息 这是一个例子:
var player = jwplayer(0); // get the first jwplayer element of the page
var video = player.getPlaylistItem(); // get the player video
var url = video.file // retrieve the video url
我认为setTimeout或setInterval是不可靠的
在jwplayer onReady
事件上设置监听器会更好。
答案 2 :(得分:0)
对此的悲观回答是,您不能等到页面完成所有AJAX操作等,因为网页可以根据需要无限期地继续加载新内容。
每次将新的HTML元素添加到页面时,您可能会考虑运行代码。这样,您可以确保在插入页面时捕获JWPlayer。
document.addEventListener("DOMNodeInserted", yourRemovalFunction);