Есть ли способ использовать Eval в выражении $ .Get? - PullRequest
0 голосов
/ 29 января 2012

Вот мой основной код для этого расширения Google Chrome.Если вы хотите увидеть расширение в действии, скачайте его из их интернет-магазина, чтобы вы могли понять, как оно работает. Extension Link

function checkForHat() {
    $.get (
        'http://www.roblox.com/User.aspx?ID=1',

        function parse(data) {
            $(data).ready(function() {
                var epicness = $(data).find('#ctl00_cphRoblox_rbxUserAssetsPane_AssetCategoryRepeater_ctl02_AssetCategorySelector');
                var epiclink = epicness.attr('href');
                eval(epiclink)
                var hatid1 = $(data).find('#ctl00_cphRoblox_rbxUserAssetsPane_UserAssetsDataList_ctl00_AssetThumbnailHyperLink');
                var hatidtitle1 = hatid1.attr('title');
                var hatidhref1 = "http://www.roblox.com" + hatid1.attr('href');
                var hatidpi1 = $(hatid1).find('img')
                var hatidpic1 = hatidpi1.attr('src')
                hatLink1 = hatidhref1;
                hatTitle1 = hatidtitle1;
                hatPic1 = hatidpic1;
                var hatid2 = $(data).find('#ctl00_cphRoblox_rbxUserAssetsPane_UserAssetsDataList_ctl01_AssetThumbnailHyperLink');
                var hatidtitle2 = hatid2.attr('title');
                var hatidhref2 = "http://www.roblox.com" + hatid2.attr('href');
                var hatidpi2 = $(hatid2).find('img')
                var hatidpic2 = hatidpi2.attr('src')
                hatLink2 = hatidhref2;
                hatTitle2 = hatidtitle2;
                hatPic2 = hatidpic2;
                var hatid3 = $(data).find('#ctl00_cphRoblox_rbxUserAssetsPane_UserAssetsDataList_ctl02_AssetThumbnailHyperLink');
                var hatidtitle3 = hatid3.attr('title');
                var hatidhref3 = "http://www.roblox.com" + hatid3.attr('href');
                var hatidpi3 = $(hatid3).find('img')
                var hatidpic3 = hatidpi3.attr('src')
                hatLink3 = hatidhref3;
                hatTitle3 = hatidtitle3;
                hatPic3 = hatidpic3;
                if (hatLink3 != null && hatTitle3 != null && hatPic3 != null) {
                    checkIfNew3();
                }
                if (hatLink2 != null && hatTitle2 != null && hatPic2 != null) {
                    checkIfNew2();
                }
                if (hatLink1 != null && hatTitle1 != null && hatPic1 != null) {
                    checkIfNew1();
                }
            });
        }
    );
};

Если вы заметили в начале, у меня есть заявление eval.Я думаю, что это работает только на самом действительном расширении, но я пытаюсь использовать: $.get.Есть ли способ загрузить эту веб-страницу и переключать вкладки на этой веб-странице, если да, то как?(Внизу расположены вкладки с надписью Gear, Shirts, Pants и т. Д.)

1 Ответ

1 голос
/ 29 января 2012

Снова я не могу оставлять комментарии.Так что я застрял на этом пути.

Почему вы используете eval в URL? Eval может выполнять только допустимый JavaScript.Это мощная, но опасная процедура.

Вы просите загрузить веб-страницу, и я вижу, что вы используете jQuery.Я не совсем знаю, чего вы пытаетесь достичь.И я не хочу временно устанавливать это расширение, потому что это слишком много времени.Однако вы можете использовать $.ajax для загрузки содержимого в любом формате, который вы хотите, включая простой текст и целые деревья HTML.Это очень мощный инструмент, поскольку он позволяет загружать веб-сайт в фоновом режиме и выполнять некоторые упрощения процессов, даже если пользователь даже не знает об этом.

Если вы предоставите дополнительную информацию, я мог бы создать сценарий на вашем компьютере.case.

EDITH:

Теперь я прошелся по сценариям и нашел способ программно изменить вкладку.Но я не знаю, сможете ли вы это использовать.Я не уверен, как веб-сайт получает информацию.Вам придется провести некоторое тестирование.

Однако вот что я придумал:

Вы хотите вызвать функцию WebForm_DoPostBackWithOptions и создать шаблон для всех доступных вкладок.,Например, чтобы запросить содержимое вкладки Gears в Google Chrome, попробуйте выполнить этот небольшой фрагмент:

// Save a pattern. We will have to replace the %n toward the end of the string.
var pattern = "ctl00$cphRoblox$rbxUserAssetsPane$AssetCategoryRepeater$ctl%n$AssetCategorySelector";

WebForm_DoPostBackWithOptions( new WebForm_PostBackOptions( pattern.replace( '%n', '02' ), '', true, '', '', false, true ) );

Я надеюсь, что содержимое загружается с помощью AJAX, поэтому вы можете найти URL-адрес содержимого:загрузка из.Этот сайт действительно смущает меня.Он отправляет форму, эффективно загружающую новый контент без обработчика перезагрузки и отправки?Я не вижу здесь никакого AJAX.Если разработчик намеревался скрыть свой код, он полностью преуспел.

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

Я надеюсь, вы можете работать с этим.Если вы действительно хотите завершить это расширение, я уверен, что вы найдете способ.Но, честно говоря, это слишком много усилий для того, с чем я буду иметь дело всего пару минут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...