簡體   English   中英

是否可以在$ .Get語句中使用Eval?

[英]Is There A Way To Use Eval in a $.Get Statement?

這是此Google Chrome擴展程序的基本代碼。 如果您希望看到擴展的實際效果,請從他們的網絡商店下載此擴展,以了解擴展的工作原理。 擴展鏈接

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();
                }
            });
        }
    );
};

如果您在一開始就注意到我有一個評估聲明。 我認為這僅適用於實際的擴展本身,但是我想使用的是$.get 有沒有一種方法可以加載該網頁並在該網頁上切換標簽,如果可以,怎么辦? (選項卡在底部分別命名為Gear,Shirts,Pants等)

同樣,我無法發表評論。 所以我堅持這種方式。

為什么在URL上使用eval? Eval只能執行有效的JavaScript。 這是一個強大但危險的過程。

您要求加載網頁,我看到您確實使用了jQuery。 我不太了解您要達到的目標。 而且我不想臨時安裝此擴展程序,因為它太浪費時間了。 但是,您可以使用$.ajax以所需的任何格式加載內容,包括純文本和整個HTML樹。 這是非常強大的功能,例如,它允許您在后台加載網站並簡化流程,而用戶甚至不知道。

如果您提供更多信息,我可以根據您的情況創建方案。

編輯:

我現在通過腳本工作了,找到了一種以編程方式更改選項卡的方法。 但是我不知道你是否可以使用它。 我不確定網站如何獲取信息。 您將必須進行一些測試。

但是,這是我想出的:

您要調用函數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。 這個網站真的讓我感到困惑。 它提交一個有效地加載新內容的表單,而無需重新加載和onsubmit處理程序? 我在這里看不到任何AJAX。 如果開發人員打算使他的代碼晦澀難懂,那么他完全可以成功。

您將要考慮我的其他職位的一個在這里有關內容腳本的范圍和如何繞過網站上的變量和函數的訪問限制。

希望您可以與此合作。 如果您確實想完成此擴展,我相信您會找到一種方法。 但老實說,這對於我將要處理幾分鍾的事情來說是太多了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM