Как я могу настроить междоменный вызов в Tampermonkey для получения содержимого div

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

Отказался загрузить скрипт http://query.yahooapis.com/v1/public/yql?q=select%20 *% 20from% 20html% 20where… t = xml% 27 & callback = jQuery21407879608951028498_1460047110140 & _ = 1460047110141 ', потому что это нарушает следующую директиву политики безопасности контента: «script-src' self ' unsafe-inline '' unsafe-eval 'http://steamcommunity-a.akamaihd.net/ https://api.steampowered.com/ http://www.google-analytics.com https://ssl.google-analytics.com https://www.google.com https://www.gstatic.com https://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;
}

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

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


person Ziggles    schedule 07.04.2016    source источник


Ответы (1)


Попробуй это

$.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)
});
person Saulo Damian Cabral    schedule 07.04.2016
comment
К сожалению, в консоли все еще появляется сообщение «Отказано в загрузке скрипта, потому что он нарушает следующую директиву политики безопасности контента». Скорее неприятно заставить говорить тамперманки - person Ziggles; 08.04.2016