2016-12-19 2 views
0

Я хочу получить артиста и название песни на радио в качестве расширения хром. Мы можем использовать эту ссылку в качестве примера; http://www.radiogrenouille.com/Как я могу получить значение с html-страницы, которой назначена внутренняя функция

Что я сделал до сих пор? Я делаю запрос http и получаю html. И попробуйте разобрать информацию о песне.

popup.js

function httpGet(theUrl, callback) 
{ 
    var xmlhttp = new XMLHttpRequest(); 
    xmlhttp.onreadystatechange = function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
     callback(xmlhttp.responseText); 
    } 
    } 
    xmlhttp.open("GET", theUrl, true); 
    xmlhttp.send(); 
} 


window.onload = function() { 
    httpGet("http://www.radiogrenouille.com/",function(result) { 
    var el = document.createElement('html'); 
    el.innerHTML = result; 
    console.log(el.querySelectorAll(".titreencours")[0].innerText); 
    }); 
} 

Но el.querySelectorAll(".titreencours")[0].innerText возвращается пустая строка. Что мне делать? Это потому, что его значение установлено на titresplayer на сайте? Итак, как я могу получить информацию?

manifest.json

{ 
    "browser_action": { 
    "default_icon": "icon.png", 
    "default_popup": "popup.html" 
    }, 
    "description": "Add to playlist", 
    "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtJPZPVU+/+uNH4xFmNWJuiGzSxWiiFnBcbqqdXaXaNegydbYC82Mio7967WfVSUFip1UWy2bJP1IVxPh9HK2CXH3W06RxvE99dafYPTGrB3ccb3KlFCdiwmNECxXAR9GY5hxyc5jsyeDWiJTDn+Fbs9XkLwndCsZx94/sInQvAjCv6FwtFj44S2t1+L7uTSSBzy1EagYkw4aocUOL+TJ4QNg2HG5iAHq/iezVrCPF81l+MQ4DaPAgSYb7gRLfS+CnKGBen9GeeoSL3AsjWJWbmGQuNOxUV+A0rduhWmaamTA6lGrxaqQE3ZMsEG83rQS866W/KJWbkrQLLg+D/022QIDAQAB", 
    "manifest_version": 2, 
    "name": "Add to playlist", 
    "permissions": [ "https://*/*", "http://*/*", "tabs", "activeTab" ], 
    "update_url": "https://clients2.google.com/service/update2/crx", 
    "version": "1.0.1" 
} 
+0

Пожалуйста, задавайте вопрос по теме: включите ** полный ** [mcve], который * дублирует проблему *. Включая * manifest.json *, некоторые из сценариев background/content/popup/HTML. Вопросы, требующие помощи по отладке («** почему этот код не работает? **)) должны включать: ► желаемое поведение, ► конкретную проблему или ошибку * и * самый короткий код, необходимый для его воспроизведения ** в вопросе сам**. Вопросы без четкого описания проблемы не полезны другим читателям. Смотрите: «** Как создать [mcve] **», [о каких темах я могу спросить здесь?] (Http://stackoverflow.com/help/on-topic) и [ask]. – Makyen

+0

Я отредактировал quesiton и добавил свой manifest.json. Я думал, я объяснил ситуацию. Я хочу получить название песни и исполнителя, но он возвращается пустым? – mmu36478

ответ

1

У вас все в порядке, ваша логика кода верна. НО вы должны знать, что содержимое страницы сильно генерируется Javascipt.

Что вы получили от своего запроса ajax, это только содержимое, предоставленное сервером.

Если вы нажмете Ctrl + U, чтобы просмотреть исходный код страницы, вы увидите пустой тег <span class="titreencours"></span>. Вот почему вы получили пустую строку, а не название. Другие теги также пусты.

  <div id="titreEnCours"> 
       <div class="contenutitreEnCours"> 
       <p><span class="titreencours"></span></p> 
       <p><span class="artistetitreencours"><strong></strong> </span></p> 
       <p class="albumencours"><span class="nom"></span> <span class="labelencours"></span></p> 
       <p class="radioencours"></p> 
       </div> 
       <span></span> 
      </div> 

Для вашей информации, страница загружает список воспроизведения из http://www.radiogrenouille.com/wp-content/themes/radiogrenouille-new/cestpasse.php

Приветствия.

+0

именно то, что произошло, это то, что вы сказали. как вы получили эту ссылку php? – mmu36478

+0

, посмотрев сетевые журналы? – mmu36478

+0

Да, сетевые журналы – vothaison

-1

Вы проверили, если вы получаете страницу в ответ «результате», как будто вы пытаетесь из другого происхождения, то вы можете получить 200 OK с пустым ответом.

+0

Ответы должны использоваться * только * для ответа на вопрос. Чтобы запросить дополнительную информацию от ОП, оставьте комментарий по Вопросу. Это действительно комментарий, а не ответ. С немного больше rep, [вы сможете оставлять комментарии] (// stackoverflow.com/privileges/comment). – Makyen

0

Проблема заключается в том, что вы пытаетесь сделать запрос междоменная, а сервер вы подключаетесь не позволяет ему (Access-Control-Allow-Origin не установлен в ответ) ... Обходной может быть, чтобы сделать запрос от серверный код (например, PHP curl) и сделать запрос ajax на ваш серверный файл (например, myAjax.php)