在Dev Tools下获取元素 - >资源 - >框架

时间:2014-03-14 10:14:39

标签: javascript jquery google-chrome tampermonkey

我试图通过使用Tampermonkey脚本来做到这一点。但是,我对新方法持开放态度......

我想要做的是从特定的data-video中提取一些数据(<div>)。但是,此数据在页面的HTML代码下不可用,但在Dev Tools - &gt;下可用。资源,然后是框架。

任何人都知道是否可以在DevTools下获取该信息?我怎么能这样做?

两页之间的比较可以在这里找到:&#34; Original HTML PAGE&#34;和&#34; HTML PAGE under DevTools&#34;

在第一个超链接上无法看到id=video-canvas,但它位于<object type="application/x-shockwave-flash(...)

2 个答案:

答案 0 :(得分:2)

正如您在问题中所述,您正在寻找的数据可在“框架”文件夹的“资源”选项卡下的DevTools中找到。您正在查看的是源HTML,类似于View Source。

您想要的代码正在被取代。该网站似乎正在使用JW Player插件,该插件将<div id="video-canvas">替换为检测到的用于播放视频的设备/浏览器的相应HTML。使用我的Mac上的所有浏览器,他们被迫使用Flash,即使它已被禁用。当使用我的iPhone,它无法播放闪光灯,并检查页面时,它使用JW自己的自定义视频元素。它似乎必须将文件位置存储在内存中,因为它不在生成的标记中。

我可以在开发工具中运行控制台并访问他们的JS类。看来我可以调用jwplayer._tracker,它有一个对象b。对象b有一个对象AlWv3iHmEeOzwBIxOUCPzg每次我在不同的浏览器之间检查时,这个对象似乎是一致的,你可以在我的第一个例子中使用for循环来获得正确的值,但是将它确定为.b以下该对象为e,而e中的对象http://i.n.jwpltx.com/v1....非常长,似乎包含一个网址,因此需要对其进行解析。

所以要运行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中使用它,但我认为它会更接近你想要的。

答案 1 :(得分:1)

这是我用来解决问题的方法......我无法在Dev Tools下获取我想要的代码,但我找到了一种从jwplayer获取数据的方法{ {1}}。这就是我获取每个视频的url文件名的方式:

getPlaylistItem