Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取开发工具下可用的元素->;资源->;框架_Javascript_Jquery_Google Chrome_Tampermonkey - Fatal编程技术网

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。不过,非常感谢您的帮助:)