2016-04-07 2 views
0

Я уже несколько дней общался с этим в течение нескольких дней, и я не чувствую себя ближе к успешной сборке данных в сценарии tampermonkey , Самое близкое, что я получил к результату, использовал этот код http://jsfiddle.net/peterbenoit/N7avm/, который успешно загрузил веб-страницу/данные, но как только я попытался добавить его в качестве скрипта tampermonkey, произошла знакомая ошибка перекрестного домена.Как настроить междоменный вызов в Tampermonkey для получения содержимого divs

Отказался, чтобы загрузить скрипт 'http://query.yahooapis.com/v1/public/yql?q=select%20 *% 20from% 20html% 20where ... т = XML% 27 & обратного вызова = jQuery21407879608951028498_1460047110140 & _ = 1460047110141', так как оно нарушает следующее содержание директивы политики безопасности: «Скрипт-Src ' самообороны '' небезопасные-inline '' небезопасные-eval 'http://steamcommunity-a.akamaihd.net/https://api.steampowered.com/http://www.google-analytics.comhttps://ssl.google-analytics.comhttps://www.google.comhttps://www.gstatic.comhttps://apis.google.com ".

$(function() { 


    var container = $('#target'); 
    var msg = $('#msg'); 



    var url = 'http://peterbenoit.com'; 

    $.getJSON("http://query.yahooapis.com/v1/public/yql?" + 
      "q=select%20*%20from%20html%20where%20url%3D%22" + 
      encodeURIComponent(url) + 
      "%22&format=xml'&callback=?", 
    function(data) { 
     if (data.results[0]) { 
      var data = filterData(data.results[0]); 
      msg.html('(ready.)'); 
      container.html(data).focus().effect("highlight", {}, 1000); 
     } else { 
      msg.html('(error!)'); 
      msg.addClass('error'); 
      var errormsg = '<p>Error: could not load the page.</p>'; 
      container.html(errormsg).focus().effect('highlight', { color: '#c00' }, 1000); 
     } 
    } 
); 

}); 


function filterData(data) { 
    // filter all the nasties out 
    // no body tags 
    data = data.replace(/<?\/body[^>]*>/g, ''); 
    // no linebreaks 
    data = data.replace(/[\r|\n]+/g, ''); 
    // no comments 
    data = data.replace(/<--[\S\s]*?-->/g, ''); 
    // no noscript blocks 
    data = data.replace(/<noscript[^>]*>[\S\s]*?<\/noscript>/g, ''); 
    // no script blocks 
    data = data.replace(/<script[^>]*>[\S\s]*?<\/script>/g, ''); 
    // no self closing scripts 
    data = data.replace(/<script.*\/>/, ''); 
    // [... add as needed ...] 
    return data; 
} 

Так тэк, что я пытаюсь сделать, это запустить персональный userscript, который отображает контент на сайте A, и я хочу, чтобы это собрать одну строку данных из DIV на классе сайт B (Div = «preview k_wear_float») и отобразить его на сайте внутри сообщения var. Я пробовал iframes, JSON, xmlhttprequests и в настоящее время не имел никакой удачи даже в доступе к данным, поэтому, если кто-нибудь может помочь мне указать в правильном направлении, это было бы хорошо.

У меня есть базовое понимание js, но я все еще новичок, поэтому, пожалуйста, объясните немного больше, чем обычный пользователь, если это вообще возможно, чтобы я мог попробовать и понять процесс немного лучше.

ответ

0

Попробуйте

$.ajax({ 
    type:'GET', 
    url: "http://query.yahooapis.com/v1/public/yql?" + "q=select%20*%20from%20html%20where%20url%3D%22" + encodeURIComponent(url) + "%22&format=xml'&callback=?", 
    async:false, 
    contentType: "application/json", 
    dataType: 'jsonp' 
}).done(function(data){ 
    console.log(data) 
}); 
+0

все еще получает «Отказано загрузить сценарий, потому что он нарушает следующее содержание директивы политики безопасности», в консоли, к сожалению. Скорее разочаровывает, чтобы поговорить с ним – Nexus1234

Смежные вопросы