Javascript 获取开发工具下可用的元素->;资源->;框架
我正试图通过使用篡改猴子脚本来实现这一点。但是我对新方法持开放态度 我想做的是从一个特定的Javascript 获取开发工具下可用的元素->;资源->;框架,javascript,jquery,google-chrome,tampermonkey,Javascript,Jquery,Google Chrome,Tampermonkey,我正试图通过使用篡改猴子脚本来实现这一点。但是我对新方法持开放态度 我想做的是从一个特定的中提取一些数据(data video)。但是,该数据在页面的HTML代码下不可用,但可以在Dev Tools->Resources下获得,然后在Frames上获得 有人知道在DevTools下是否有可能获得这些信息吗?我该怎么做 可以在此处找到这两个页面之间的比较:“和” 在第一个超链接上,无法看到id=video canvas,但它位于上,正如您在问题中所述,您要查找的数据可在DevTools中“Fram
中提取一些数据(data video
)。但是,该数据在页面的HTML代码下不可用,但可以在Dev Tools->Resources下获得,然后在Frames上获得
有人知道在DevTools下是否有可能获得这些信息吗?我该怎么做
可以在此处找到这两个页面之间的比较:“和”
在第一个超链接上,无法看到
id=video canvas
,但它位于上,正如您在问题中所述,您要查找的数据可在DevTools中“Frames”文件夹的“Resources”选项卡下找到。您看到的是源HTML,类似于View Source
你想要的代码,就是正在被替换的代码。该站点似乎正在使用JW播放器插件,该插件正在用检测到的播放视频的设备/浏览器的相应HTML替换
。由于我所有的浏览器都在Mac上,他们被迫使用Flash,即使它被禁用。当使用不能播放flash的my iPhone,并查看页面时,它使用JW自己的自定义视频元素。似乎它必须将文件位置存储在内存中,因为它不在生成的标记中
我能够在dev工具中运行控制台并访问它们的JS类。看来我可以调用jwplayer.\u tracker
,它有一个对象b
。对象b
有一个对象AlWv3iHmEeOzwBIxOUCPzg
每次我在不同浏览器之间检查时,这个对象似乎是一致的,在我的第一个示例中,您可以使用for循环来获得正确的值,但将其累加到.b,该对象后面是e
,在e
中是对象http://i.n.jwpltx.com/v1....
非常长的字符串,似乎包含url,因此需要对其进行解析
所以为了得到HTML字符串,我运行了
for ( var loc in jwplayer._tracker.b.AlWv3iHmEeOzwBIxOUCPzg.e){
loc
}
如果我们把它放在一个函数中,解析字符串并返回一个值
function getSubURL(){
var initURL;
for ( var loc in jwplayer._tracker.b.AlWv3iHmEeOzwBIxOUCPzg.e){
initURL = loc;
}
//look for 'mp4:' this is in front of the file path
var start = initURL.indexOf("mp4%3A");
//look for the .mp4 for the end of the file name
var stop = initURL.indexOf(".mp4");
//grab the string between
//start+6 to remove characters used to find it
//and stop+4 to include characters used to find it
var subPath = (initURL.substring((start+6),(stop+4))).split("%2F").join("/");
return subPath;
}
//and run it
getSubURL();
它将返回ciencia/astronomia/fimsol.mp4
您可以从控制台运行此功能,但我不知道如何在Tamper Monkey中使用此功能,但我认为它使您更接近您想要的功能。这是我用来解决问题的方法。。。我无法在Dev工具下获取所需的代码,但我找到了一种通过函数getplaylitem
从jwplayer获取数据的方法。这是我获取每个视频的url文件名的方式:
function getFilename(filename) {
var filename;
if(jwplayer().getPlaylistItem){
filename = jwplayer().getPlaylistItem()['file'];
}
else{
return filename;
}
filename = filename.substring(filename.indexOf("/mp4:") + 5);
return filename;
}
最有可能的是,元素只能通过脚本插入…是的,这是最有可能的,因为元素需要“抓取”一些数据来播放视频。我的目标是达到视频的链接(在id视频画布中),这样我就可以在没有Flash播放器(原始mp4文件)的情况下播放它。那么,实际问题是什么呢?元素在DOM中,甚至有id,所以选择它应该是相当容易的…你可能只需要等待,直到脚本执行此替换已经运行。嗨,迈克尔!我已经解决了我的问题,但我完全忘记发布我的代码。。。我已经用这种方式做了一些事情(使用jwplayer),但是使用了更简单的方法,因为我使用的是TamperMonkey。不过,非常感谢您的帮助:)