繁体   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