解码base64网址并嵌入HTML

时间:2018-04-08 18:09:55

标签: javascript php html cookies base64

我想要像http://www.jredtna.com/read/?hash=cGxheWVyIDEgPT4gaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvZmgwUUQtV1dyY2MKcGxheWVyIDIgPT4gaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvMk1wVWotQXVhNDg=

这样做

(您无法看到iframe,因为网站使用Cookie来检查您是否来自其他网站。)

所以请加入http://halqat.online/video/watch.php?vid=6f673f4c5并点击红色播放按钮查看我的意思。

解码hash = by base64:

  

cGxheWVyIDEgPT4gaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvZmgwUUQtV1dyY2MKcGxheWVyIDIgPT4gaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvMk1wVWotQXVhNDg =

会像这样给我们:

  

播放器1 => https://www.youtube.com/embed/fh0QD-WWrcc

     

播放器2 => https://www.youtube.com/embed/2MpUj-Aua48

我的问题是我怎么能这样做:

获取 hash = Base64URL

对其进行解码并拆分" 播放器1 "和" youtube网址"通过 =>

将数据放入html中,如下所示

<div class="embeding">
  <ul>
      <li><a data-src="https://www.youtube.com/embed/fh0QD-WWrcc">player 1</a></li>
      <li><a data-src="https://www.youtube.com/embed/2MpUj-Aua48">player 2</a></li>
  </ul>
</div>

并自动添加 li a ,如果找到其他玩家

1 个答案:

答案 0 :(得分:1)

我使用splice方法创建一个数组,然后从这个数组中通过split方法得到youtube url的字符串。

function decodeBase_64(arg){ 
  var decodedData=window.atob(arg);
  var a;
  var c=[];  
  for(var i=0;i<decodedData.split('=>').length;i++){
    if(decodedData.split('=>')[i].length>10){      
      a=decodedData.split('=>')[i];
      a=a.substr(0, 42);
      c.push(a);
    }
  }
   return c; 
}
document.getElementById('player_1').setAttribute('data-src',decodeBase_64('cGxheWVyIDEgPT4gaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvZmgwUUQtV1dyY2MKcGxheWVyIDIgPT4gaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvMk1wVWotQXVhNDg=')[0] );
document.getElementById('player_2').setAttribute('data-src',decodeBase_64('cGxheWVyIDEgPT4gaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvZmgwUUQtV1dyY2MKcGxheWVyIDIgPT4gaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvMk1wVWotQXVhNDg=')[1] );

console.log(decodeBase_64('cGxheWVyIDEgPT4gaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvZmgwUUQtV1dyY2MKcGxheWVyIDIgPT4gaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvMk1wVWotQXVhNDg='));
console.log(decodeBase_64('cGxheWVyIDEgPT4gaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvZmgwUUQtV1dyY2MKcGxheWVyIDIgPT4gaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvMk1wVWotQXVhNDg=')[0]);
console.log(decodeBase_64('cGxheWVyIDEgPT4gaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvZmgwUUQtV1dyY2MKcGxheWVyIDIgPT4gaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvMk1wVWotQXVhNDg=')[1]);
<div class="embeding">
  <ul>
      <li><a data-src="" id="player_1">player 1</a></li>
      <li><a data-src="" id="player_2">player 2</a></li>
  </ul>
</div>

检查控制台以查看c阵列

对于第二个问题。通过window.location.href获取她,然后

var str='http://www.jredtna.com/read/?hash=cGxheWVyIDEgPT4gaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvZmgwUUQtV1dyY2MKcGxheWVyIDIgPT4gaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvMk1wVWotQXVhNDg=';
str=str.substring(str.indexOf("hash="));
str=str.replace('hash=','');
console.log(str);