如何从另一个域访问 iframe 的元素

How to access the elements of an iframe from another domain?

本文关键字:iframe 元素 访问 另一个      更新时间:2024-03-30

>编辑:我使用 getFrame 获取 iframe 的 src,然后尝试在另一个名为 getSrc 的函数中获取视频的 src。出于某种原因,我仍然得到未定义的回报。以下是由于 getSrc 中的日志而导致的控制台图片:https://i.stack.imgur.com/h1bNy.png

getFrame = function(links) {
   return $q.all(links.map(function(link){
      return $http.get(link.Address);
  })).then(function(results){
      var src = results.map(function(result){
        var tmp = document.implementation.createHTMLDocument();
        tmp.body.innerHTML = result.data;
        var video = $(tmp.body.children).find('#definitionblock iframe');
        var video_src = $(video[0]).attr("src");
        return "http://bslsignbank.ucl.ac.uk" + video_src;
      });
      return src;
  })
}
getSrc = function(links) {
  return $q.all(links.map(function(link){
     return $http.get(link);
 })).then(function(results){
     var src = results.map(function(result){
       var tmp = document.implementation.createHTMLDocument();
       tmp.body.innerHTML = result.data;
       //console.log(tmp);
       var video = $(tmp.body.children).find('#sign');
       console.log(video[0]);
       var video_src = $(video[0]).attr("poster");
       //console.log(video_src);
       return video_src;
     });
     return src;
 })
}

这是调用函数的地方:

bslLogin.getFrame($scope.links).then(function(response) {
        $scope.videos = response;
        bslLogin.getSrc($scope.videos).then(function(response) {
          $scope.srcs = response;
        });
});

如果我在录制视频[0]时没有指定视频索引,我会得到这个结果:https://i.stack.imgur.com/utXnj.png

发现了一些东西,但我不知道如何以正确的形式获得视频 src。

可能性很少:

  1. 如果可以控制服务器端,则需要在服务器上启用 CORS

  2. 如果您可以控制 iframe 内容页面,您可以使用 postMessage

参考:Access_control_CORS,发布消息