JS Получение данных из спарсеного javascript

114
13 июля 2021, 17:50

нашлась довольно интересная задача, пишу расширение для google chrome и столкнулся с проблемой, когда мне требуется из спарсеного <script type="text/javascript"> получить параметр.

Имеется код:

  for(let elem of document.getElementsByClassName('search-results'))
  {
   var test = elem.getElementsByTagName('script');
   console.log(test[0]);
  }

Ответ приблизительно:

<script type="text/javascript">
    if(!wavesurfer) var wavesurfer=[];
    //if(!loaded) var loaded=[];
    var eq=wavesurfer.length;
    var ua = navigator.userAgent.toLowerCase();
    var msie = ua.indexOf("trident");
    var msedge = ua.indexOf("edge");
    var vivaldi = ua.indexOf("vivaldi");
    var showProgress = function (percent) {
        $j("#wave291392 .wave-loader").html("loading " + percent + "%");
        $j("#wave291392 > wave").css({opacity:0.2});            
    };
    var hideProgress = function () {
        $j("#wave291392 .wave-loader").empty();
        $j("#wave291392 > wave").css({opacity:1});
    };
    wavesurfer[eq].backend.song = "/streamers/play.php?id=1567959606.4474:dea6d4ed2ec96ae95852fc6d169edc61b8bc42b7:c5aa1c56b246a120698f53f01b9ff6faebdec2ff90f2f80e1f2c473358b7fd0bdad4925466967141c20c47d75c61b45eeb84ce92bf1c3e343f3f7be734dc10c041b488aa8cae39dd141b676c7ef204bac9f2793aab4176924f534b8432f9c86075787d7bdddac548299a76a001f5cf499dd465b223b06b61b39b00c53f65aad785931c39016b2c3dcd903b94bb1eca0c676466a3e71c8eafece06dbd3d9eaba728edc752c9d3ec148177c37f5236e1b10642654f098b146a654c905aa0e82c74a203479c94b28a8cf103455b775ddfe98ee8817fa5e664c33da26d53a2c69e5ed31a1fe5c2f685677a67ffc509f9ec9743f6f072a2f3fa6985142a9dd63c9ae5e7db19d6eebac71aa271646b32a90ae8f6b6f96b30301fedb7beda5b301fb494"; 

И из него нужно получить только переменную wavesurfer[eq].backend.song. Как можно это сделать?

Answer 1

// Ну помимо того, что 
 
console.log( wavesurfer[0].backend.song ); 
 
/* Если вдруг переменная не глобальная */ 
 
for(let elem of document.querySelectorAll('.search-results')){ 
  let script = elem.querySelector('script'); 
  console.log( script.textContent.match(/\.backend\.song\s?=\s?("|'|`)(.*?)\1/)[2] ); 
}
<div class="search-results"> 
<script type="text/javascript"> 
    // Какой-то код. 
    let wavesurfer = [{backend: {song: null}}] 
    let eq = 0; 
    wavesurfer[eq].backend.song = "bubu"; 
</script> 
</div>

P.s. https://regex101.com/r/at1VIk/1 — можно навести курсор на каждый символ и посмотреть, что оно значит.

READ ALSO
DHTMLX Gantt. Проблема с родителем в методе gantt.createTask()

DHTMLX Gantt. Проблема с родителем в методе gantt.createTask()

Помогите понять в чем проблема с методом ganttcreateTask()

130
Django валидация ajax форм

Django валидация ajax форм

В своем тренировочном проекте столкнулся с следующей проблемойВ проекте есть старницы где формы подгружаются динамически в виде таблице...

102